通过WPAD中定义的代理与Web服务进行通信

时间:2015-10-07 09:12:37

标签: c# internet-explorer proxy

我正在开发需要与某些Web服务通信的Windows WPF应用程序。我现在需要为代理后面的某些用户实现支持。在一个特定情况下,用户通过Internet Explorer设置使用WPAD自动获取代理设置:

enter image description here

我已经浏览了很多关于代理的文章,但我根本无法让它发挥作用。以下是我尝试过的内容:

WebRequest request = WebRequest.Create("http://www.google.com");
request.Proxy = WebRequest.GetSystemWebProxy();
var response = (HttpWebResponse)request.GetResponse();

WebRequest.GetSystemWebProxy()的文档说:

  

"返回使用Internet Explorer设置配置的代理   目前模仿的用户。"

它似乎从Internet Explorer获取设置。当我调试并检查代理时,我发现它已检测到WPAD文件:

enter image description here

但它似乎无论如何都无法发挥作用。当调用GetResponse()时,它失败并显示以下异常消息:

  

"连接尝试失败,因为连接方没有   在一段时间后正确回应,或建立连接   失败,因为已连接的主机无法响应"

据我所知,我不应该在app.config文件中包含任何内容。那我错过了什么?

1 个答案:

答案 0 :(得分:0)

您需要在app.config文件中设置代理元素:

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true" >
        <proxy autoDetect="true" scriptLocation="http:/wpad.dat"/>
    </defaultProxy>
</system.net>

https://msdn.microsoft.com/en-us/library/sa91de1e(v=vs.110).aspx

另一种方法,虽然它被认为是遗产:

WebProxy proxyObject = new WebProxy("http://proxyserver:80/",true);
WebRequest request = WebRequest.Create("http://www.google.com");
request.Proxy = proxyObject;