我正在尝试调用call服务。我需要使用一个使用WPAD脚本的代理。此WPAD脚本的URL因应用程序的不同部署而不同。
尽管IE具有正确的代理设置,但该应用程序作为windows服务在本地系统帐户下运行,因此该应用程序不知道该windows用户的IE设置。
将以下内容放入app.config中:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true" >
<proxy autoDetect="True" scriptLocation="http://url.to/wpad.dat"/>
</defaultProxy>
</system.net>但这有一个限制,即它不能由用户配置。有没有办法从(C#-)代码中动态地做上面的事情?我还怀疑上面的内容会改变不应该通过代理的but服务的行为(但我还没有证实)。
在http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspx上,我找到了有用的文本:“(有关使用WPAD特性的示例,请参阅IWebProxyScript类的文档。)”但是我没有找到这个例子:(.
发布于 2012-01-24 22:33:10
这篇关于代码项目的文章展示了如何使用windows APIs执行PAC脚本并返回给定url:http://www.codeproject.com/Articles/12168/Using-PAC-files-proxy的正确代理详细信息。
您可以使用该函数找出代理详细信息,然后直接配置web服务对象代理,或者更改WebRequest.DefaultProxy。
发布于 2014-03-08 02:27:14
WebProxy本身在内部使用IWebProxyScript。
如果您使用指向WPAD脚本的URL初始化WebProxy,它将为传递给它的请求解析正确的URL。您可以将该WebProxy设置为WebRequest,它将自动处理为请求目标设置正确的代理URL。
WebRequest request = WebRequest.Create("http://targeturl");
request.Proxy = new WebProxy("http://url.to/wpad.dat");您还可以获取给定目标的代理URL,如下所示:
WebProxy proxy = new WebProxy("http://url.to/wpad.dat");
Uri proxyUri = proxy.GetProxy(new Uri("http://targeturl"));这不适用于PAC脚本。
https://stackoverflow.com/questions/8895754
复制相似问题