Есть ли общее решение для работы с разными корпоративными прокси? - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над клиентским приложением 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, но для большинства из них требуется некоторая конфигурация, предназначенная для одного прокси. Мне интересно, есть ли более элегантное решение, которое как-то адаптируется к разным сетевым средам? Мне кажется, что у каждого клиента должен быть свой подход к отправке веб-запросов, который очень громоздок в обслуживании. Это даже работа разработчика или это работа корпоративных ИТ - как-то «разблокировать» приложение?

...