我的問題來自我在企業網絡上發現的問題。我正在開發Windows 8,所以在我的情況下IE10被設置爲自動檢測代理設置。如何在C#Windows Store應用程序中獲取新的默認WebProxy對象?
在我的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。內部它只是去並獲得一個新的WebProxy.GetDefaultProxy()每當NetworkChange.NetworkAddressChanged。
我在應用程序啓動時連接它並且問題消失。
WebRequest.DefaultWebProxy = new NetworkChangeAwareProxy();
希望有人會告訴我有一個更好的方法來解決這個問題。我的具體問題是關於應用程序商店樣式應用程序。 (metro apps)
System.Net.WebProxy.GetDefaultProxy()不可用,System.Net.HttpWebRequest.DefaultWebProxy在脫機並返回後僅返回相同的失效代理。
如何在C#Windows Store應用程序中獲取新的IWebProxy對象的句柄?
你重複使用相同的WebRequest對象? –