我遇到.NET检测通过Internet Explorer配置的代理设置的问题。
我正在编写一个支持代理的客户端应用程序,并测试我设置了一个包含9个squid服务器的数组,以支持HTTP和HTTP的各种身份验证方法。我有一个脚本可以将IE更新为我选择的任何配置(代理,通过“Auto”,PAC或硬编码进行检测)。
我已经尝试了以下3种方法来通过.NET检测IE配置。在我看来,我发现.NET选择了错误的代理服务器集。 IE具有正确的设置,如果我使用IE浏览网页,我可以看到我通过wireshark访问了正确的服务器。
WebRequest.GetSystemWebProxy().GetProxy(destination);
GlobalProxySelection.Select.GetProxy(destination);
WebRequest.DefaultWebProxy
以下是我的以下提示:
答案 0 :(得分:4)
我找到了解决方案。
.NET使用“WinHttp Web代理自动发现服务”来执行PAC脚本执行,并可能缓存结果。只需停止并重新启动此服务即可。以下命令行为我做了这个。
NET STOP WinHttpAutoProxySvc
NET START WinHttpAutoProxySvc
http://wiki.blackviper.com/wiki/WinHTTP_Web_Proxy_Auto-Discovery_Service
我是通过遵循James Kovacs关于附加调试器的建议而找到的。我已经反映了代码,并且在我发布问题之前尝试连接调试器失败了,但无法解释究竟发生了什么。耗尽了选项,我再次尝试调试,几个小时后在第76行的_AutoPWebProxyScriptEngine.cs中找到以下注释,这引发了我的发现
// In Win2003 winhttp added a Windows Service handling the auto-proxy discovery. In XP using winhttp
// APIs will load, compile and execute the wpad file in-process. This will also load COM, since
// WinHttp requires COM to compile the file. For these reasons, we don't use WinHttp on XP, but
// only on newer OS versions where the "WinHTTP Web Proxy Auto-Discovery Service" exists.
答案 1 :(得分:0)
我有同样的问题,我成功地在注册表中获取/设置代理设置:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyServer"="<your proxy IP address>:8080"
"ProxyEnable"=dword:00000001
"ProxyOverride"="<local>"