Image.Source使用代理

时间:2012-09-04 14:18:17

标签: wpf image url webproxy

在我的WPF页面上,我有一个像这样的图像(一个或多个):

<Image Source="{Binding Path=PicURL}"/>

另外,我有一个设置页面,可以选择在我的整个<全局> 中全局切换开启/关闭 Internet代理设置的使用情况EM>应用。 如果要谈论手动网络请求,我可以解决它,例如,像这样:

HttpWebRequest request = ( HttpWebRequest )WebRequest.Create( ... );
if( UseProxy ) request.Proxy.Credentials = CredentialCache.DefaultCredentials; 
               else req.Proxy = null;

但它不适用于像 Image 这样的WPF控件,其中内容基于URL 使用 Internet代理设置

有没有办法在整个应用 运行时全局切换代理

2 个答案:

答案 0 :(得分:2)

您可以修改WebRequest.DefaultWebProxy

如果那些在您的情况下不起作用,那么解决方法是您可以使用WebRequest使用/或不使用代理设置从Web自行下载“资源”。

您可以将Web请求返回的数据用作流来初始化BitmapImage,然后将其设置为Source,或者您可以保存到临时文件并使Source指向该本地文件。

您可以在Binding上编写并使用“转换器”,它可以从图像Url下载/转换为BitmapImage,也可以根据您的具体情况使用MarkupExtension。

您可能希望使用Aynchronous绑定,因为下载图像资源可能需要一段时间,而您不希望这样做会阻止您的主UI线程。

答案 1 :(得分:0)

如果您希望代理设置为配置文件

,请尝试使用此选项
<?xml version="1.0" encoding="utf-8" ?>
     <configuration>
          <system.net>
              <defaultProxy enabled="true" useDefaultCredentials="true">
                <proxy proxyaddress="http://proxyaddress:port" 
                       usesystemdefault="False" 
                       bypassonlocal="True" 
                       autoDetect="False" />
              </defaultProxy>
          </system.net>
</configuration>

干杯