Приложение С# выдает исключения «Удаленное имя не может быть разрешено» после того, как я изменил свою сеть

Мое приложение выдает исключения «Удаленное имя не может быть разрешено» после того, как я изменил свою сеть на корпоративную.

Приложение написано на C# и с использованием WebClient. Экземпляр WebClient создается по таймеру каждые 3 секунды и получает данные с сервера с помощью UploadValues.

Офисная сеть настроена таким образом, что у нас мало сетей WiFi (назовем их A, B, C, D). A – это корпоративная сеть VPN.

Когда мы запускаем приложение, оно работает хорошо независимо от текущего сетевого подключения. Если мы изменим соединение между B, C, D, приложение продолжит работать без проблем. Если мы запустим приложение, когда мы подключены к сети A, а затем переключимся на B, C или D, оно все равно будет работать без проблем. Но если мы запустим приложение, когда мы подключены к B, С или D, а затем переключимся на A (корпоративный VPN), приложение выдает «Удаленное имя не может быть разрешено» на каждом такте таймера, и если мы переключимся обратно на B, C или D, UploadValues ​​начинает работать нормально. Единственный способ заставить приложение работать правильно после переключения с сети B, C, D на сеть A — это перезапустить приложение (если после перезагрузки мы переключимся на B, C, D и обратно на A, приложение снова начнет крашиться с «Удаленным имя не может быть разрешено». Я попытался получить доступ к тому же ресурсу через браузер (Chrome, IE 10), и это сработало просто отлично.

Я попытался получить IP-адрес с помощью Dns.GetHostAddresses, и он всегда возвращает «Нет такого хоста» в сети A, но в сети B, C или D все работает нормально. Команда nslookup возвращает «Несуществующий домен» в сети A, но отлично работает в B, C или D. В то же время я без проблем могу получить доступ к ресурсу через Chrome или IE независимо от текущей сети.

ipconfig /flushdns, ipconfig /registerdns и ipconfig /renew не работают.

Что вызывает эту проблему? В этот момент я полностью потерян, и у меня нет идей.


person user3748803    schedule 17.06.2014    source источник


Ответы (1)


Корень проблемы - прокси. Без прокси невозможно получить доступ к этому сервису. По неизвестной причине прокси не работает, когда пользователь переключает сети. Чтобы соединение работало, вам нужно указать прокси при инициализации веб-клиента следующим образом:

webClient.Proxy = WebRequest.GetSystemWebProxy();
person user3748803    schedule 20.06.2014