Использование Fiddler для обнюхивания запросов Visual Studio 2013 (прокси-брандмауэр)
У меня возникают проблемы с Visual Studio 2013 и нашим корпоративным прокси (подпись не работает, обновления не работают, визуальная галерея студии не работает, nuget и git). Все они выполняют запросы http или https. (например, http://visualstudiogallery.msdn.microsoft.com/). В VS2013 я просто получаю полосы развертки или сообщения о отсутствии сетевого подключения.
Нет проблем с браузером (chrome, IE, firefox), поскольку они все понимают прокси (407 отказов и затем отвечают учетными данными).
Итак, я хочу выяснить, почему VS2013 не работает. Но я не вижу никакого трафика, когда говорю fiddler2, чтобы посмотреть процесс DEVENV.EXE(или все процессы).
Кстати, я пробовал некоторые изменения в файле web.config(devenv.exe.config), чтобы убедиться, что он идет на прокси (я видел это в построителе стека), но он не работает для меня. См. Дополнения к разделу ниже:
<system.net>
<defaultProxy useDefaultCredentials="true" enabled="true">
<proxy proxyaddress="http://gw6.OURSITE.com:3128" />
</defaultProxy>
<settings>
<ipv6 enabled="true"/>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
Update
Эрик, я принял ваше предложение и просто добавил его в файл C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.config
.
Что я добавил:
<system.net>
<defaultProxy useDefaultCredentials="true" enabled="true">
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy>
</system.net>
Я обнаружил, что VS2013 не отправляет строку user-agent. Он знает о # 407 naks и отвечает на учетные данные, но шлюз все еще хочет пользовательский агент:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
Connection: close
Content-Length: 1341
<html>
<head>
<title>Access Policy Denied: No User-Agent Specified</title>
<meta name="description" content="Web Access Policy">
</head>
<body>
Ответы
Ответ 1
Если вы хотите посмотреть трафик с помощью Fiddler, вы, вероятно, захотите пойти по пути изменения файла machine.config
, чтобы все приложения .NET отправляли трафик через Fiddler. Это помогает обеспечить захват данных из процессов, запущенных в службах, и т.д.
Откройте machine.config
в папке C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
.
Обратите внимание, что если вы отлаживаете 64-битную услугу (например, ASP.NET), вам нужно искать в папке Framework64
вместо папки Framework. Аналогично, если вы используете версию .NET до 4.0, вам нужно будет отрегулировать часть версии пути.
Добавьте следующий XML-блок как одноранговый узел в существующий элемент system.net, заменив любой существующий элемент defaultProxy, если он есть:
<!-- The following section is to force use of Fiddler for all applications, including those running in service accounts -->
<system.net>
<defaultProxy
enabled = "true"
useDefaultCredentials = "true">
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy>
</system.net>
Ref http://fiddler2.com/blog/blog/2013/01/08/capturing-traffic-from-.net-services-with-fiddler
Примечание. Вы можете использовать Fiddler для вставки заголовка User-Agent
в исходящие запросы, если хотите. Кроме того, в последней версии Fiddler вы можете File > Import > Packet Capture собирать HTTP-трафик из файлов .cap, захваченных с помощью Microsoft NetMon или Microsoft Message Analyzer.
Ответ 2
Мой босс предложил еще один простой способ решить эту проблему. Вы можете просто добавить "скрипач" в uri. Например: http://localhost:52101/ → http://localhost.fiddler:52101/
Ответ 3
В качестве альтернативы вы можете использовать легкий способ, например:
if (Debugger.IsAttached) { request.Proxy = новый WebProxy ( "http://localhost:8888/
", true); }