我正在开发需要与某些Web服务通信的Windows WPF应用程序。我现在需要为代理后面的某些用户实现支持。在一个特定情况下,用户通过Internet Explorer设置使用WPAD自动获取代理设置:
我已经浏览了很多关于代理的文章,但我根本无法让它发挥作用。以下是我尝试过的内容:
WebRequest request = WebRequest.Create("http://www.google.com");
request.Proxy = WebRequest.GetSystemWebProxy();
var response = (HttpWebResponse)request.GetResponse();
WebRequest.GetSystemWebProxy()的文档说:
"返回使用Internet Explorer设置配置的代理 目前模仿的用户。"
它似乎从Internet Explorer获取设置。当我调试并检查代理时,我发现它已检测到WPAD文件:
但它似乎无论如何都无法发挥作用。当调用GetResponse()时,它失败并显示以下异常消息:
"连接尝试失败,因为连接方没有 在一段时间后正确回应,或建立连接 失败,因为已连接的主机无法响应"
据我所知,我不应该在app.config文件中包含任何内容。那我错过了什么?
答案 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;