如何使用Microsoft.XMLHTTP指定代理配置?

时间:2009-06-25 02:15:29

标签: asp-classic proxy xmlhttprequest

我正在使用来自经典asp页面的Microsoft.XMLHTTP将信息发布到另一个网站......

我希望能够检查fiddler发生了什么,为此我必须找到一种方法来配置Microsoft.XMLHTTP以使用代理......

有可能吗? Microsoft.XMLHTTP从哪里获取配置?

非常感谢

4 个答案:

答案 0 :(得分:14)

我认为这里的一些事情需要清理。

ProgID“Microsoft.XMLHTTP”指向与“MSXML2.XMLHTTP”相同的类。此类使用Internet Explorer使用的WinINET HTTP协议堆栈,因此将使用PC上“Internet设置”中的任何代理配置。

因此对于“Microsoft.XMLHTTP”,proxycfg命令没用。

XMLHTTP的替代方案是“MSXML2.ServerXMLHTTP”。此类使用WinHTTP HTTP协议栈,该协议栈设计为轻量级且服务器友好。在WinINET不在的同一进程中,在多个线程中使用多个实例是安全的。因此,ServerXMLHTTP应该用在服务器端的ASP代码中。

WinHTTP不使用WinINET使用的Internet设置,因此要配置ServerXMLHTTP将使用您需要使用proxycfg命令的代理。一个非常有用的命令是: -

proxycfg -u

将当前的WinINET代理设置复制到WinHTTP使用的设置,如果使用fiddler等工具,这对于在启动fiddler后开始监控通过WinHTTP的流量非常有用。 (请注意,您将使用proxycfg -d跟进以删除代理设置。)

ServerXMLHTTP还有setProxy方法,允许动态配置实际代理设置为代码。

答案 1 :(得分:6)

对于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 :(得分:2)

糟糕

我想我找到了它

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

...

答案 3 :(得分:0)

我查看了这个帖子来解决我的问题 - 它有所帮助,但现在对新系统进行了更改 我的情况是从公司服务器进行Web MSXML2.ServerXMLHTTP调用,通过代理服务器使用已消化的Active Directory凭据。

这里有几个问题,但我最终设法让它只使用标准MSXML2.ServerXMLHTTP而不必指定.3.0或.6.0版本。

较新的Windows服务器没有proxycfg,您需要使用前面提到的netsh。

你需要排列一些东西 在我的场景中,我使用AD用户帐户的凭据运行网站和应用程序池(这是数据库访问所必需的) 我建议至少应用程序池需要作为AD帐户运行

这是在64位Windows系统上

  1. 显然AD用户需要访问互联网
  2. 您需要使用netsh
  3. 指定winhttp代理设置
  4. 如果您启用了32位应用程序&#39;启用后,您还需要将winhttp代理设置为32位。它会寻找那个设置。
  5. 那怎么样?

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