Fiddler не перехватывает трафик WCF с веб-сервера на сервер приложений - PullRequest
2 голосов
/ 18 сентября 2011

У меня есть два возможных потока:

ConsoleClient -(1)-> ApplicationServer

или

SilverlightClient -(2)-> WebServer -(3)-> ApplicationServer

Fiddler успешно перехватывает HTTP-трафик на (1) и (2), но не на (3).Вот пример захвата (1):

POST /WcfDemo/ws HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Host: il-mark-lt
Content-Length: 521
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService/Add</a:Action><a:MessageID>urn:uuid:d7fde351-12fd-4872-bc26-52ff97f126e9</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">http://il-mark-lt/WcfDemo/ws</a:To></s:Header><s:Body><Add xmlns="http://tempuri.org/"><x>4</x><y>5</y></Add></s:Body></s:Envelope>

HTTP/1.1 200 OK
Content-Length: 399
Content-Type: application/soap+xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Sat, 17 Sep 2011 20:57:16 GMT

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService/AddResponse</a:Action><a:RelatesTo>urn:uuid:d7fde351-12fd-4872-bc26-52ff97f126e9</a:RelatesTo></s:Header><s:Body><AddResponse xmlns="http://tempuri.org/"><AddResult>9</AddResult></AddResponse></s:Body></s:Envelope>

А вот пример (2):

POST /WcfDemoService.svc/ws HTTP/1.1
Host: localhost:56970
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.6,he-IL;q=0.5,he;q=0.4,ru-RU;q=0.3,ru;q=0.1
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://localhost:56970/ClientBin/SilverlightClient.xap
Content-Length: 581
Content-Type: application/soap+xml; charset=utf-8

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService2/Add</a:Action><a:MessageID>urn:uuid:e8420d3e-f568-49ce-bfc7-5631d5bf3fd0</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">http://localhost:56970/WcfDemoService.svc/ws</a:To></s:Header><s:Body><Add xmlns="http://tempuri.org/"><x>11</x><y>22</y><serverChannelKind>ws</serverChannelKind></Add></s:Body></s:Envelope>

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Sat, 17 Sep 2011 20:59:23 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 401
Cache-Control: private
Content-Type: application/soap+xml; charset=utf-8
Connection: Close

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService2/AddResponse</a:Action><a:RelatesTo>urn:uuid:e8420d3e-f568-49ce-bfc7-5631d5bf3fd0</a:RelatesTo></s:Header><s:Body><AddResponse xmlns="http://tempuri.org/"><AddResult>33</AddResult></AddResponse></s:Body></s:Envelope>

Теперь я абсолютно уверен, что (3) действительно получаетчерез.Таким образом, все сводится к некоторой неправильной конфигурации на WebServer, но я не могу это прибить.Веб-сервер - это просто тривиальное приложение ASP.NET, размещенное в IIS.Он даже содержит следующие строки в файле web.config:

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="false" usesystemdefault="true" />
  </defaultProxy>
</system.net>

Тем не менее это не работает.

Чтобы еще больше усилить мои подозрения в отношении конфигурации веб-сервера, я проверил SilverlightClient --> ApplicationServer поток и он захвачен очень хорошо.

Я использую сервер разработки Asp.Net.

Редактировать

Запуск procmon показывает, что следующий подозрительный ключ реестра обращался к(среди прочих):

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProxyBypass

И на моей машине было установлено значение 1. Я изменил его на 0 и похоже, что это решило мою проблему.Единственная проблема заключается в том, что когда я возвращаю 1, Фидлер продолжает захватывать проблемную ногу!Очень интересно.

Во всяком случае, пока я доволен.

Ответы [ 2 ]

5 голосов
/ 17 октября 2012

Вы звоните "localhost", верно?Fiddler не может захватывать локальный трафик, если вы используете «localhost» в качестве имени хоста.

Решения:

  • Использовать имя сервера (например, myserver)
  • Использовать ip4.fiddler (например, http://ipv4.fiddler:8787)
2 голосов
/ 18 сентября 2011

Не уверен, если это является причиной ... но,

Несколько вещей для проверки:

  1. В IIS7 appPool имеет настройку loadUserProfile.Это приводит к тому, что сеанс загружает профиль пользователя, что означает, что он может получить настройки системного прокси.

  2. Проверьте код, выполняющий запрос от веб-сервера, даже если вы настроили использование системного прокси иобходя onLocal (который применяется только к именам без точек), код, выполняющий запрос, все еще может явно указать использовать или не использовать прокси.

  3. Удалено, но вы можете захотетьиграть с учетной записью, в которой appPool работает как локальная учетная запись с профилем и сетевой службой.

Надеюсь, это поможет - в этих сетевых вещах много переменных между двумя точками:)

...