Nit*_*esh 6 wcf proxy webclient
我使用WebClient以下列方式下载一些资源:
Stream stream;
try
{
WebClient webClient = new webClient();
stream = webClient.OpenRead(MyResourceUri);
}
catch (Exception)
{
return null;
}
return stream;
Run Code Online (Sandbox Code Playgroud)
当我在WPF应用程序中执行此操作时,它工作正常并获得正确的流.
当我在WCF服务调用中执行此操作时,它不起作用.抛出WebException并显示消息"Unable to connect to remote server".(适用于托管在我的计算机上或公司网络中的文件,但是对于网络上的任何资源都无法使用).该服务托管在IIS7上.
到目前为止的调查显示,差异是因为webproxy.WPF应用程序中的webclient.proxy指的是IE中设置的代理设置,而WCF中的代理设置没有.
为什么会这样?更重要的是,如何让WCF中的WebClient使用类似的代理设置?
编辑:我在WebClient上设置代理,它在WCF服务中工作
webClient.Proxy = new WebProxy(ProxyAddressFromIE);
Run Code Online (Sandbox Code Playgroud)
在这里,我已经硬编码了代理addess.有哪些方法/ API可以获得一个?还有为什么它在WCF服务和WPF应用程序中有所不同?
为了回答您的问题之一,您的 WPF 应用程序和 IIS 托管的 WCF 服务之间存在差异的原因是这样的。
WPF 应用程序在实际的 Windows 会话(确切地说是您的用户会话)中运行。这意味着该会话加载了一个用户配置文件,并且该会话包含 IE 中配置的代理设置等。
IIS 中托管的 WCF 服务不在 Windows 会话中运行。它们作为服务运行,因此没有 Windows 会话(它们实际上在会话 0 中运行,但这只是一个实现细节)。这意味着没有代理配置。
为了可靠地解决这个问题,您可以拥有自己的代理配置,也许在 web.config 中。另一种选择是通过 netsh.exe 配置代理。
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |