我在使用 .Net WebRequest 时遇到了无法按照预期使IE选项中的代理自动配置(PAC)工作的问题。
根据这篇文章:
Proxy Detection
Take the Burden Off Users with Automatic Configuration in .NET
系统代理应该默认设置为每个 WebRequest。
以下是 proxy.js pac 文件的样子:
function FindProxyForURL(url, host)
{
return "PROXY ProxyServerName:3118; DIRECT;";
}
我也看了这篇文章:如何设置默认代理以使用默认凭据?
建议在 app.config 文件中添加以下内容:
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
加入这个没有帮助。
我创建了一个小控制台应用程序来测试这个问题... 在这里:
static void Main(string[] args)
{
HttpWebRequest request = null;
try
{
String resolvedAddress = WebRequest.DefaultWebProxy.GetProxy(new Uri("http://www.google.com")).ToString();
Console.WriteLine("Proxy for address is: " + resolvedAddress);
Uri m_URLToTest = new Uri("http://www.google.com");
request = WebRequest.Create(m_URLToTest) as HttpWebRequest;
request.Method = "GET";
request.KeepAlive = false;
request.Timeout = 5000;
request.Proxy = WebRequest.DefaultWebProxy;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string message = reader.ReadToEnd();
}
catch (Exception ex)
{
Console.Write("Exception");
}
}
输出结果:
地址的代理是http://www.google.com,而不是代理服务器名称:3118。
只有在使用自动配置脚本时才会发生这种情况...
我有什么遗漏吗?请帮忙!