Я работаю над клиентским приложением C#, которому необходимо отправлять веб-запросы. Однако, поскольку это приложение продается компаниям, оно обычно находится за корпоративным прокси. Иногда приложение не может отправлять веб-запросы (для этого я использую RestSharp).
Вот что я делаю, если отправка запроса без прокси не работает:
string sampleURL = "http://proxy.example.com";
Uri proxy = WebRequest.DefaultWebProxy.GetProxy(new Uri(sampleURL));
if (proxy.OriginalString != sampleURL)
{
WriteText($"Proxy detected: {proxy.OriginalString}");
_webProxy = new WebProxy(proxy);
// ...
}
Я заметил следующее поведение:
- Для большинства компаний это работает без проблем с использованием прокси по умолчанию или вышеупомянутого кода.
- В одной компании все приложения net на пройти аутентификацию через прокси. Поэтому я создал всплывающее окно, предлагающее пользователю ввести такие учетные данные прокси, чтобы заставить его работать.
// setting up new proxy => https://stackoverflow.com/questions/29856543/httpclient-and-using-proxy-constantly-getting-407
_webProxy = new WebProxy(proxy)
{
UseDefaultCredentials = false,
Credentials = new NetworkCredential(user, pass);
};
- В одной компании кажется, что соединение inte rnet потеряно каждые 15 минут или около того. Затем пользователю необходимо открыть веб-браузер и создать некоторый сетевой трафик c. Моему приложению также разрешено снова отправлять веб-запросы. В настоящее время я просто открываю невидимое окно IE, чтобы оно работало. Но это довольно неприятный обходной путь.
Я уже пытался найти некоторые решения для inte rnet, но для большинства из них требуется некоторая конфигурация, предназначенная для одного прокси. Мне интересно, есть ли более элегантное решение, которое как-то адаптируется к разным сетевым средам? Мне кажется, что у каждого клиента должен быть свой подход к отправке веб-запросов, который очень громоздок в обслуживании. Это даже работа разработчика или это работа корпоративных ИТ - как-то «разблокировать» приложение?