Moje pytanie pochodzi z problemu, który odkryłem w sieci firmowej. Pracuję z Windows 8, więc w moim przypadku IE10 jest ustawiony, aby automatycznie wykrywać ustawienia proxy.Jak mogę uzyskać nowy domyślny obiekt WebProxy w aplikacji C# Windows Store?
W mojej aplikacji C# używam System.Net.Http.HttpClient. Odkryłem, że domyślny obiekt IWebProxy dla całego mojego procesu staje się bezużyteczny, jeśli przejdę do trybu offline, złożyć nieudaną prośbę, a następnie powrócić do trybu online. Ważne jest złożenie wniosku, który nie powiedzie się, w przeciwnym razie nie będzie problemu. Oto przykład, w jaki sposób mogę uzyskać uchwyt tego kruchego obiektu proxy.
var defaultHandler = new HttpClientHandler();
var fragileProxy = defaultHandler.Proxy;
var httpClient = new HttpClient(defaultHandler);
Po niektóre eksperymenty odkryłem, że mogę dostać proxy pracę dzwoniąc System.Net.WebProxy.GetDefaultProxy();
Następnie zaimplementowałem NetworkChangAwareProxy: IWebProxy. To prawda, proxy dla mojego IWebProxy. Wewnętrznie to po prostu idzie i dostaje nową WebProxy.GetDefaultProxy() za każdym razem, gdy NetworkChange.NetworkAddressChanged.
Podłączam go, gdy aplikacja się rozpocznie, a problem zniknie.
WebRequest.DefaultWebProxy = new NetworkChangeAwareProxy();
Mam nadzieję, że ktoś mi powie, że jest lepszy sposób na rozwiązanie tego problemu. Moje konkretne pytanie dotyczy jednak aplikacji stylu sklepu aplikacji. (aplikacje metro)
System.Net.WebProxy.GetDefaultProxy() nie jest dostępny, a System.Net.HttpWebRequest.DefaultWebProxy zwraca ten sam nieistniejący serwer proxy po przejściu do trybu offline i powrocie.
Jak mogę uzyskać uchwyt do nowego obiektu IWebProxy w aplikacji C# Windows Store?
Czy ponowne użycie tego samego obiektu WebRequest? –