如何在C#Windows应用商店应用中获取新的默认WebProxy对象?

sig*_*ig9 7 c# webproxy windows-8 windows-runtime

我的问题来自我在企业网络上发现的一个问题.我正在使用Windows 8进行开发,因此在我的情况下IE10设置为自动检测代理设置.

在我的C#app中,我使用System.Net.Http.HttpClient.我发现如果我离线,发出失败的请求然后重新联机,我的整个过程的默认IWebProxy对象将变得无法使用.提出失败的请求很重要,否则没有问题.这是一个如何处理这个脆弱的代理对象的例子.

var defaultHandler = new HttpClientHandler();
var fragileProxy = defaultHandler.Proxy;
var httpClient = new HttpClient(defaultHandler);
Run Code Online (Sandbox Code Playgroud)

经过一些实验,我发现我可以通过调用System.Net.WebProxy.GetDefaultProxy()获得一个工作代理;

然后我实现了一个NetworkChangAwareProxy:IWebProxy.那是对的,我的IWebProxy的代理.在内部,只要NetworkChange.NetworkAddressChanged,它就会获得一个新的WebProxy.GetDefaultProxy().

我在应用程序启动时将其连接起来并且问题消失了.

WebRequest.DefaultWebProxy =  new NetworkChangeAwareProxy();
Run Code Online (Sandbox Code Playgroud)

希望有人会告诉我有更好的方法来解决这个问题.我的具体问题是关于Application Store Style Apps.(地铁应用)

System.Net.WebProxy.GetDefaultProxy()不可用,System.Net.HttpWebRequest.DefaultWebProxy在离线并返回后只返回相同的已解除代理.

如何在C#Windows应用商店应用中获取新IWebProxy对象的句柄?

Ste*_*sek 2

System.Net.WebProxy.GetDefaultProxy() 至少自 .net 3 起已被弃用,请改用 System.Net.WebRequest.GetSystemWebProxy()。对于 WinRT,他们删除了许多已弃用的方法。

请参阅http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspxhttp://msdn.microsoft.com/en-us/library/system.net.webrequest.getsystemwebproxy .aspx