2011-06-13 34 views
11

Tôi có dịch vụ WCF có hai điểm cuối. Một với basicHttpBinding và một với netTcpBinding. Đây là cấu hình của tôi ...Không thể yêu cầu netTcpBinding hiển thị trong Fiddler

<services> 
     <service name="SomeService.Service"> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="" 
      name="EndPointHttp" contract="SomeService.IService" /> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="" 
      name="EndPointTcp" contract="SomeService.IService" /> 
     </service> 
</services> 

Tuy nhiên, khi tôi sử dụng dịch vụ, tôi đang cố gắng so sánh sự khác biệt giữa hai yêu cầu. Vì vậy, tôi đang chạy fiddler để làm điều này. Tôi có thể thấy các yêu cầu basicHttpBinding trong Fiddler nhưng tôi không thể nhận được các yêu cầu net.tcp: // để hiển thị. Tôi có thể làm gì để xem lưu lượng truy cập này?

Trả lời

14

Fiddler là một proxy HTTP, vì vậy nó sẽ chỉ nắm bắt các yêu cầu sử dụng giao thức HTTP - nó sẽ không nắm bắt các yêu cầu được thực hiện bằng cách sử dụng ổ cắm trực tiếp. Bạn có thể sử dụng Network Monitor hoặc một số công cụ chụp ở mức độ thấp khác để thực hiện điều đó, nhưng giao diện không tốt bằng giao diện mà bạn có thể sử dụng với Fiddler.

Ngoài ra, như được chỉ ra trong câu trả lời khác của Ladislav Mrnka, bạn sẽ xem các byte nhị phân cho .NET Message Framingbinary XML encoding, vì vậy trừ khi bạn quen thuộc với chúng hầu hết việc chụp sẽ trông giống như vô nghĩa.

8

Fiddler là trình thám thính HTTP không phải là trình thám thính TCP. Bạn chỉ có thể nhìn thấy thông tin liên lạc HTTP và HTTPS trong trình duyệt. Nếu bạn muốn xem các thông báo được truyền qua TCP, bạn phải sử dụng một công cụ khác làm việc ở mức thấp hơn. Ví dụ WireShark nhưng được chuẩn bị rằng bạn sẽ chỉ thấy một số dữ liệu nhị phân.

3

Fiddler là HTTP trình gỡ lỗi. Nếu bạn không sử dụng HTTP, chẳng hạn như với một netTcpBinding, bạn sẽ không thể capture lưu lượng với nó. Bạn có thể thử Wireshark hoặc một cái gì đó tương tự.

Các vấn đề liên quan