在.Net中使用IE设置中的代理自动配置

时间:2012-11-25 15:03:42

标签: c# .net proxy pac

我无法使用.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;";
}

我还看了一下这篇文章:How should I set the default proxy to use default credentials?

建议在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

代替代理地址是ProxyServerName:3118

仅在使用自动配置脚本时才会发生...

我错过了什么吗?请帮忙!

2 个答案:

答案 0 :(得分:8)

找到了解决方案!

PAC文件的mime类型非常重要:[Content-type:application / x-ns-proxy-autoconfig]

其他mime类型可能无效。

确保使用fiddler2(禁用缓存)mime类型是合适的。 某些配置可能会显示Content-Type:text / plain,这是不好的。

答案 1 :(得分:0)

确保您已在Internet (Client & Server)中检查了Private Networks (Client & Server)Package.appxmanifest功能。

See this

[Source]