2011-06-13 15 views
11

Mam usługę WCF, która ma dwa punkty końcowe. Jeden z basicHttpBinding i jeden z netTcpBinding. Oto moja konfiguracja ...Nie można uzyskać żądań netTcpBinding do wyświetlenia w skrzypce

<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> 

Jednak, gdy korzystam z usługi, próbuję porównać różnicę między dwoma żądaniami. Więc używam skrzypka, żeby to zrobić. Widzę proste żądania HttpBinding w skrzypku, ale nie mogę uzyskać żądań net.tcp: //, aby się pojawiły. Co mogę zrobić, aby zobaczyć ten ruch?

Odpowiedz

14

Serwer proxy to HTTP proxy, więc przechwytuje tylko żądania korzystające z protokołu HTTP - nie przechwytuje żądań wykonanych bezpośrednio przez gniazdo. Do tego celu można użyć narzędzia Network Monitor lub innego niskiego poziomu narzędzia do przechwytywania, ale interfejs nie jest tak przyjemny, jak ten, z którym można być przyzwyczajonym do gry Fiddler.

Ponadto, jak wskazano w innej odpowiedzi Ladislava Mrnki, przyjrzymy się bajtom binarnym dla .NET Message Framing i binary XML encoding, więc jeśli nie jesteś obeznany z nimi, większość przechwytywania będzie wyglądać jak bełkot.

8

Fiddler jest snifferem HTTP, a nie snifferem TCP. Możesz zobaczyć tylko komunikację HTTP i HTTPS w skrzypce. Jeśli chcesz widzieć wiadomości przekazywane przez TCP, musisz użyć innego narzędzia działającego na niższym poziomie. Na przykład WireShark, ale bądź przygotowany, że zobaczysz tylko niektóre dane binarne.

3

Fiddler jest debuggerem HTTP HTTP. Jeśli nie korzystasz z protokołu HTTP, na przykład z funkcją netTcpBinding, nie będzie można rejestrować ruchu za jego pomocą. Możesz spróbować Wireshark lub coś podobnego.