Как я могу указать конфигурацию прокси с помощью Microsoft.XMLHTTP? - PullRequest
9 голосов
/ 25 июня 2009

Я использую Microsoft.XMLHTTP со страницы классического asp для публикации информации на другом сайте ...

Я бы хотел иметь возможность проверить, что происходит с Fiddler, и для этого мне нужно найти способ настроить Microsoft.XMLHTTP для использования прокси ...

это возможно? откуда Microsoft.XMLHTTP получает свою конфигурацию?

Большое спасибо

Ответы [ 4 ]

14 голосов
/ 25 июня 2009

Я думаю, что некоторые вещи здесь нужно прояснить.

ProgID «Microsoft.XMLHTTP» указывает на тот же класс, что и «MSXML2.XMLHTTP». Этот класс использует стек протоколов WinINET HTTP, который использует Internet Explorer, и поэтому будет использовать любую настройку прокси-сервера, найденную в настройках Интернета на ПК.

Следовательно, для "Microsoft.XMLHTTP" команда proxycfg бесполезна.

Альтернативой XMLHTTP является «MSXML2.ServerXMLHTTP». Этот класс использует стек протоколов WinHTTP HTTP, который разработан, чтобы быть легким и дружественным к серверу. Безопасно использовать несколько экземпляров в нескольких потоках в одном процессе, где WinINET нет. По этой причине именно ServerXMLHTTP следует использовать в ASP-коде на стороне сервера.

WinHTTP не использует настройки Интернета, которые использует WinINET, поэтому для настройки прокси-сервера, который будет использовать ServerXMLHTTP, необходимо использовать команду proxycfg. Действительно полезная команда: -

proxycfg -u

Который копирует текущие настройки прокси WinINET в настройки WinHTTP, если вы используете такие инструменты, как fiddler, это полезно для запуска мониторинга трафика, проходящего через WinHTTP, после запуска fiddler. (Обратите внимание, что вы используете proxycfg -d для удаления настроек прокси).

ServerXMLHTTP также имеет метод setProxy, который позволяет динамически настраивать фактические настройки прокси в виде кода.

6 голосов
/ 19 августа 2013

Для Windows Vista и выше, proxycfg.exe, возможно, устарел и заменен netsh winhttp . Как упомянуто в этой статье: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384069%28v=vs.85%29.aspx

Как моя ситуация в win7, мне нужно сделать следующее, чтобы установить прокси:

netsh winhttp set proxy myProxyServer:80
2 голосов
/ 25 июня 2009

упс

Я думаю, что нашел это

http://support.microsoft.com/kb/289481/EN-US/

вы должны выдать что-то вроде


proxycfg -d -p myProxyServer:80 "<local>"

...

редактирование:

Я также обнаружил, что при использовании ServerXMLHTTP вместо XMLHttp у вас есть метод setProxy ...

http://msdn.microsoft.com/en-us/library/ms760236(VS.85).aspx

а вот пример использования

http://msdn.microsoft.com/en-us/library/ms763680(VS.85).aspx

...

0 голосов
/ 09 сентября 2016

Я посмотрел на эту ветку, чтобы решить мою проблему - она ​​помогла, но теперь есть изменения в более новых системах.
У меня была ситуация, когда я выполнял веб-вызов MSXML2.ServerXMLHTTP с корпоративного сервера, проходящего через прокси-сервер с переваренными учетными данными Active Directory.

Здесь у меня возникла пара проблем, но мне в итоге удалось заставить его работать только со стандартным MSXML2.ServerXMLHTTP без необходимости указывать версии .3.0 или .6.0.

В новых серверах Windows нет proxycfg, вам нужно использовать netsh, как упоминалось ранее.

Есть несколько вещей, которые вам нужно выстроить.
В моем сценарии я запускал веб-сайт и пул приложений под учетными данными учетной записи пользователя AD (это было необходимо для доступа к базе данных) Я бы предположил, что по крайней мере пул приложений должен работать как учетная запись AD

Это было в 64-битной системе Windows

  1. Очевидно, что пользователю AD потребуется доступ в Интернет
  2. Вам нужно будет указать настройки прокси winhttp, используя netsh
  3. Если у вас включен параметр «Включить 32-разрядные приложения», вам также потребуется установить прокси winhttp для 32-разрядного. Он будет искать этот параметр.

Так как?

Проверьте настройки прокси winhttp В командной строке

%WINDIR%\System32\NETSH WINHTTP SHOW PROXY

Проверьте настройки прокси winhttp В командной строке

%WINDIR%\SysWOW64\NETSH WINHTTP SHOW PROXY

Если вам нужно установить их Из командной строки [измените 8080 на ваш порт]

%WINDIR%\System32\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
%WINDIR%\SysWOW64\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
...