我的问题来自我在公司网络上发现的一个问题。我正在使用 Windows 8 进行开发,因此在我的情况下,IE10 设置为自动检测代理设置。
在我的 C# 应用程序中,我使用 System.Net.Http.HttpClient。我发现如果我脱机、发出失败的请求然后重新联机,整个过程的默认 IWebProxy 对象将变得不可用。提出失败的请求很重要,否则没有问题。这是我如何处理这个脆弱的代理对象的示例。
var defaultHandler = new HttpClientHandler();
var fragileProxy = defaultHandler.Proxy;
var httpClient = new HttpClient(defaultHandler);
经过一些实验,我发现我可以通过调用 System.Net.WebProxy.GetDefaultProxy(); 来获得一个工作代理;
然后我实现了一个 NetworkChangAwareProxy : IWebProxy。没错,就是我的 IWebProxy 的代理。在内部,它只是在 NetworkChange.NetworkAddressChanged 时获取一个新的 WebProxy.GetDefaultProxy()。
当应用程序启动并且问题消失时,我将其连接起来。
WebRequest.DefaultWebProxy = new NetworkChangeAwareProxy();
希望有人会告诉我有更好的方法来解决这个问题。我的具体问题是关于应用商店风格的应用程序。(地铁应用)
System.Net.WebProxy.GetDefaultProxy() 不可用,并且 System.Net.HttpWebRequest.DefaultWebProxy 只是在离线和回来后返回相同的失效代理。
如何在 C# Windows Store 应用程序中获取新 IWebProxy 对象的句柄?