Mã của tôi sử dụng nhiều cuộc gọi WCF và khi tôi cố gắng gỡ lỗi nó, nó không đi đến chính mã dịch vụ. Có cách nào để gỡ lỗi mã WCF bằng cách nào đó?Làm thế nào để gỡ lỗi các chương trình WCF
Trả lời
Bạn cần phải đính kèm các trình gỡ lỗi để quá trình mà dịch vụ WCF bạn đang chạy trong.
Nếu trong IIS bạn cần phải gắn với quá trình w3p.exe tương ứng.
Nếu trong một ứng dụng độc lập hoặc dịch vụ cửa sổ, hãy đính kèm với tên của exe của bạn.
Trong Visual Studio, trên trình đơn trình gỡ lỗi, có "đính kèm vào quy trình". Mở mã có liên quan, đặt điểm ngắt và gọi dịch vụ làm cho đường dẫn mã đó thực thi.
Bên ngoài gỡ lỗi, sử dụng. Truy tìm bằng các mức có thể chuyển đổi là một cách hay để hiểu rõ những gì đang diễn ra. Tôi thường thiết lập sys internals debugview để đánh dấu các lỗi màu sắc và cảnh báo và liên tục có nó chạy trong khi chạy mã hoặc kiểm tra. Đường màu ra khỏi tầm nhìn ngoại vi của tôi trong khi làm việc tìm thấy vấn đề.
Tự đính kèm bản thân dịch vụ chứ không phải mã đang gọi.
Để gỡ lỗi dịch vụ WCF trong studio trực quan 2010, hãy chuyển đến Gỡ lỗi -> Đính kèm vào quy trình. Chọn "Hiển thị quy trình từ tất cả người dùng" và chọn w3p.exe nếu bạn đang sử dụng IIS hoặc tên của ứng dụng nếu không. Đặt trong một breakpoint, thực hiện cuộc gọi, và sau đó bạn có thể bắt đầu gỡ lỗi.
Nếu đó là ứng dụng web (tôi khuyên bạn nên làm điều này), bạn có thể nhấp chuột phải vào dự án, chuyển đến tab Web và trong Bắt đầu tác vụ chọn "Không mở trang, đợi yêu cầu từ bên ngoài ứng dụng". Lưu và đóng cài đặt này, sau đó chỉ cần nhấn F5 để bắt đầu gỡ lỗi.
Gỡ lỗi ứng dụng web đã tiết kiệm cho tôi rất nhiều thời gian! –
Nếu bạn đang tìm kiếm để theo dõi các hoạt động WCF để xem lưu lượng được tạo ra theo đúng thứ tự, sau đó tôi muốn giới thiệu một trong những phương pháp sau đây:
1) Sử dụng fiddler để xem giao thông WCF.
2) Sử dụng trình theo dõi WCF để giám sát các cuộc gọi WCF thực tế. Điều này cực kỳ hữu ích khi cố gắng xác định nguyên nhân thất bại serialization. Bạn có thể bật này bằng cách thêm khối sau vào khối cấu hình web.config của bạn:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\WebTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
Kích đúp chuột vào tập tin được tạo ra sẽ mở ra cho người xem log dịch vụ WCF, mà sẽ phân tích các tập tin cho bạn và cho phép bạn để đi sâu vào các cuộc gọi cụ thể và xem các ngoại lệ thực tế xảy ra.
Điều này đã được ** vô cùng ** hữu ích trong trường hợp của tôi. Cảm ơn rất nhiều! – LoBo
Khi chạy một ứng dụng truy cập WCF dịch vụ thường có hai quá trình liên quan đến
- Quá trình khách hàng được tiếp cận các dịch vụ WCF
- Quá trình máy chủ được lưu trữ các dịch vụ WCF
Có vẻ như bạn đang gỡ lỗi quy trình khách hàng. Để bước qua mã dịch vụ WCF thực tế, bạn cần đính kèm Trình gỡ lỗi Visual Studio vào quá trình đang lưu trữ dịch vụ và thiết lập một điểm ngắt trong mã.
Lưu ý: Visual Studio có thể đính kèm vào nhiều quy trình cùng một lúc để bạn có thể gỡ lỗi cả mã máy khách và máy chủ trong cùng một phiên. Sử dụng
- Tools -> Đính kèm để trình
Có một cách dễ dàng hơn nhiều. Chỉ cần bắt đầu nhiều quy trình trong Visual Studio. Nhấp chuột phải vào Solution. Nhấp vào Thuộc tính. Chọn Dự án khởi động. Nhấp vào Nhiều dự án khởi động. Đặt WCF và các dự án Client thành Action = Start. Bây giờ bạn sẽ bước qua WCF cũng như khách hàng.
điều này có lẽ nên được chọn làm câu trả lời đúng – Sergei
Trong trường hợp của tôi, tôi đặt trang WCF như StartUp Project
trong Visual Studio và trực tiếp điều hành WCF trong chế độ Debug,
mục WCF trong Visual Studio Solution Explorer cũng giống như:
sau WCF bắt đầu, sẽ có một chương trình trang web mới trong trình duyệt, và url của nó sẽ thích http://xxxx:xxport/Service.svc
, sao chép uri này và sử dụng nó trong chương trình khác, những người gọi WCF này,
sau đó đặt điểm ngắt tại phương thức mà cuộc gọi chương trình, điểm ngắt sẽ được nhập thành công khi chương trình thực thi.
- 1. Làm thế nào để làm cho trình gỡ lỗi Valgrind bước qua một chương trình
- 2. Gỡ lỗi Chương trình XQuery
- 3. Làm cách nào để sử dụng trình gỡ lỗi gdb MinGW để gỡ lỗi chương trình C++ trong Windows?
- 4. Chương trình bị lỗi với 0xC000000D và không có ngoại lệ - làm cách nào để gỡ lỗi chương trình?
- 5. Làm thế nào để gỡ lỗi một chương trình khi nó treo w/out ngoại lệ?
- 6. Làm thế nào để gỡ lỗi/thực hiện một chương trình Ocaml từng bước?
- 7. Làm thế nào để gỡ lỗi chương trình với bộ xử lý tín hiệu cho SIGSEGV
- 8. Gỡ lỗi chương trình python trong emacs
- 9. Làm thế nào để theo dõi một chương trình gỡ lỗi trong OCaml?
- 10. Làm cách nào để gỡ lỗi dịch vụ WCF?
- 11. Làm thế nào để vô hiệu hóa các chương trình xác thực cho WCF Data Services
- 12. Làm cách nào để dừng trình gỡ rối JIT bước vào dịch vụ wcf bị lỗi?
- 13. Làm thế nào để gỡ lỗi các ứng dụng wxpython?
- 14. Làm cách nào để gỡ lỗi chương trình được biên dịch bằng 'make'?
- 15. Làm cách nào để bật gỡ lỗi ngược trên chương trình đa luồng?
- 16. Làm thế nào để Gỡ lỗi ClojureScript
- 17. Làm cách nào để gỡ lỗi chương trình C++ đang chạy trong Linux?
- 18. Làm cách nào để gỡ lỗi trình tải khởi động?
- 19. Làm thế nào để gỡ lỗi các ứng dụng Web2py?
- 20. Làm cách nào để gỡ lỗi trình đổ bóng GLSL?
- 21. Làm thế nào để tăng tốc các chương trình WPF?
- 22. Làm cách nào để gỡ lỗi chương trình do một người dùng khác thực hiện?
- 23. Làm thế nào để tôi tắt gỡ lỗi trong quá trình tháo gỡ vĩnh viễn?
- 24. Làm thế nào để gỡ lỗi mã Haskell?
- 25. Làm cách nào để gỡ lỗi NSManagedObjects trong trình gỡ lỗi XCode?
- 26. Làm thế nào để gỡ lỗi lỗi yêu cầu ajax?
- 27. Cửa sổ chương trình gỡ lỗi sẽ không đóng
- 28. Làm thế nào để gỡ lỗi một chương trình lấy đầu vào của người dùng từ stdin với GDB?
- 29. Làm thế nào để kiểm tra các biến rspec với trình gỡ lỗi nâng lên
- 30. Làm thế nào để xem các Biến Phiên trong Trình gỡ lỗi Visual Studio 2008?
Bạn đang chạy dịch vụ WCF như thế nào? Bên trong IIS hoặc là một ứng dụng độc lập? –