2011-01-16 2 views
35

Я использую IIS7 Express при разработке своего веб-приложения. Мне нужно использовать скрипач, чтобы исследовать проблему, и не могу понять, как настроить вещи, чтобы я мог получить поток HTTP. Кажется, что IIS7 express будет слушать только на localhost, а это значит, что я не могу получить доступ к потоку.Использование Fiddler с IIS7 Express

ответ

52

Это не имеет ничего общего с IIS7 Express и все, что связано с тем, что вы используете loopback traffic.

Ref: https://www.fiddlerbook.com/fiddler/help/hookup.asp#Q-LocalTraffic

Нажмите Правила> Настроить правила.

Update ваши правила файл следующим образом:

static function OnBeforeRequest(oSession:Fiddler.Session) 
{ 
    if (oSession.HostnameIs("MYAPP")) { oSession.host = "localhost:portnumber"; } 
} 

Затем просто посетить http://myapp в вашем браузере.

Или используйте адрес http://localhost.fiddler/, а Fiddler будет использовать имя хоста localhost вместо преобразования на IP-адрес.

+0

Я прочитал, что он не работает. Я предполагаю, что это потому, что IIS7 Express только слушает на localhost – Brettski

+3

Привет Эрик и Бреттски, Бретцки прав, я действительно нашел ту же проблему с IIS Express. Кажется, он контролирует только имя хоста «localhost», а не трафик до 127.0.0.1.У меня была аналогичная проблема, о которой я недавно опубликовал в StackOverflow http://stackoverflow.com/questions/4709014/using-custom-domains-with-iis-express –

+1

Очевидно, она должна работать под правами администратора, и вам нужно входите и изменяйте привязки. Я не понимаю, почему это необходимо, так как Кассини легко это делает. Почему IIS Express не может контролировать порт на 127.0.0.1 без заголовка хоста «localhost». –

0

Вы можете использовать fiddler как прокси-сервер между вашими клиентами и сервером. Это означает, что вы запускаете скрипач, а затем получаете доступ к серверу, используя порт fiddler, а не обычный порт (по умолчанию для fiddler2 - 8888, я думаю). Если вам нужно отлаживать сервер «живых» и реальных клиентов, вы можете изменить привязку IIS от: 80 к чему-то еще и поместить прокси-сервер Fiddler на порт 80.

EDIT: Кстати, по умолчанию fiddler2 изменяет настройки прокси-сервера в браузерах, чтобы они все равно получали доступ через все скрипты (на машине, на которой установлен только скрипач)

9

Одним из полезных вариантов ответа Эрика (который был отредактирован Бреттом) было бы использование oSession.port для построения oSession.host. С этим небольшим изменением, если вам нужно захватить экспресс-трафик IIS на http://localhost:12345, они могут использовать http://iisexpress:12345. Это упростит захват трафика для сайтов со случайными портами, созданных WebMatrix и VS. Я пробовал это с помощью IE и Firefox, и захват трафика IIS Express был легким. Скрипач скалы !.

static function OnBeforeRequest(oSession:Fiddler.Session) 
{ 
    //... 
    // workaround the iisexpress limitation 
    // URL http://iisexpress:port can be used for capturing IIS Express traffic 
    if (oSession.HostnameIs("iisexpress")) { oSession.host = "localhost:"+oSession.port; } 
    //... 
} 
+0

Вы также можете добавить это: 'oSession.utilReplaceInResponse (" localhost: "+ oSession.port," iisexpress: "+ oSession.port);' – Gebb

3

С последней версией скрипача вам нужно всего лишь перейти на localhost.fiddler: port. Тем не менее, это одно не помогло мне, и я все еще получал доступ при использовании Windows Authentication. Чтобы это исправить, я нашел эту запись в блоге: http://www.parago.de/2013/01/fiddler-and-the-401-unauthorized-error-with-asp-net-web-api-using-integrated-windows-authentication-wia/

Короче говоря, создать этот ключ:

Key Path HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0

Значение Название BackConnectionHostNames

Значение Тип REG_MULTI_SZ

String Value localhost.fiddler

Смежные вопросы