Мое приложение выдает исключения «Удаленное имя не может быть разрешено» после того, как я изменил свою сеть на корпоративную.
Приложение написано на 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 не работают.
Что вызывает эту проблему? В этот момент я полностью потерян, и у меня нет идей.