/ / Как мога да получа нов обект по подразбиране за WebProxy в приложение C # Windows Store? - c #, windows-8, Windows-runtime, webproxy

Как мога да получа нов обект по подразбиране за WebProxy в приложение C # Windows Store? - c #, windows-8, Windows-runtime, webproxy

Въпросът ми идва от проблем, който открих в корпоративната мрежа. Аз се развивам с 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. Вътрешно то просто отива и получава нов WebProxy.GetDefaultProxy (), когато NetworkChange.NetworkAddressChanged.

Включвам го, когато заявката започне и проблемът изчезне.

WebRequest.DefaultWebProxy =  new NetworkChangeAwareProxy();

Надявам се, че някой ще ми каже, че има по-добър начин да се реши този проблем. Моят конкретен въпрос обаче е за Apps за приложения за приложения за приложения. (метро приложения)

System.Net.WebProxy.GetDefaultProxy () не е налице и System.Net.HttpWebRequest.DefaultWebProxy току-що връща същия пропуск на прокси, след като е офлайн и се връща.

Как мога да получа дръжка на нов обект на IWebProxy в приложение C # Windows Store?

Отговори:

2 за отговор № 1

System.Net.WebProxy.GetDefaultProxy () е отхвърлен поне от .net 3, вместо това използвайте System.Net.WebRequest.GetSystemWebProxy (). За WinRT те премахнаха много отхвърлени методи.

виждам http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspx И http://msdn.microsoft.com/en-us/library/system.net.webrequest.getsystemwebproxy.aspx


0 за отговор № 2

Можете да използвате заявката в мрежата, за да получите прокси сървъра:

var req = WebRequest.Create(@"api/stat/stats/");
req.Proxy = WebRequest.GetSystemWebProxy();
req.Timeout = 10000;
req.Method = "GET";