【发布时间】:2011-05-24 23:21:01
【问题描述】:
我在 .NET 检测通过 Internet Explorer 配置的代理设置时遇到问题。
我正在编写一个支持代理的客户端应用程序,为了进行测试,我设置了一个由 9 个 squid 服务器组成的数组,以支持 HTTP 和 HTTPs 的各种身份验证方法。我有一个脚本,可以将 IE 更新为我选择的任何配置(代理、通过“自动”检测、PAC 或硬代码)。
我尝试了以下 3 种方法来通过 .NET 检测 IE 配置。有时我注意到 .NET 选择了错误的代理服务器集。 IE 有正确的设置,如果我用 IE 浏览网页,我可以看到我通过 wireshark 访问了正确的服务器。
WebRequest.GetSystemWebProxy().GetProxy(destination);
GlobalProxySelection.Select.GetProxy(destination);
WebRequest.DefaultWebProxy
以下是我的建议:
- 我的脚本在网络服务器上设置一个 PAC 文件,并更新 IE 中的配置,然后清除 IE 的缓存
- .NET 似乎在某个代理配置上“卡住”了,我必须为 .NET 设置另一个配置才能意识到发生了变化。有时它似乎会选择一些随机的服务器集(我确信它们不是随机的,只是我使用过的一组服务器,并且在一些缓存的 PAC 文件或其他东西中)。如,我将检查目标“https://www.secure.com”的代理,我可能已经配置了 IE,因此期望得到“http://squidserver:18”,而不是返回“http ://squidserver:28"(端口 18 运行 NTLM,28 运行无需身份验证)。所有 squid 服务器都可以正常工作。
- 这似乎不是 XP 上的问题,只有 Vista、2003 和 windows 7。
- 在 IE 中硬编码代理服务器总是有效的
- 时间总能解决问题 - 如果我离开计算机大约 20 或 30 分钟然后回来,.NET 会选择正确的代理设置,就像缓存的 PAC 脚本过期一样。
【问题讨论】:
-
你不能使用 UseDefaultProy 吗?
-
使用默认代理?在网上找不到任何东西。
-
这有帮助吗? -> stackoverflow.com/questions/1023635/…
-
不知道为什么我对此一无所知 - 同样的问题。问题更新了
-
为什么不检查 .NET Framework 源代码,看看它实际上在做什么?您可以在此处从 Microsoft 下载它:referencesource.microsoft.com/Default.aspx 您还可以通过 Visual Studio 中的代理代码进行调试,以查看它在做什么以及从何处获取其代理值。