Я использую .NET WebRequest при изменении моего файла HOSTS. Я наблюдаю, что System.Net не соблюдает эти изменения - как я могу это сделать?
У меня есть несколько серверов с балансировкой нагрузки за единственным именем хоста, пусть скажем "example.com". Я хочу настроить таргетинг на несколько из них по отдельности, поэтому моя программа будет жестко программировать конкретный IP-адрес устройства в моем файле HOSTS перед отправкой запроса на example.com:
163.56.0.34 example.com
Для первого сервера и первого запроса это работает нормально. Затем моя программа снова меняет файл HOSTS:
163.56.0.48 example.com
И я создаю новый HttpWebRequest. Когда я отправлю это, я могу наблюдать в NETMON, что он переходит на первый IP-адрес (163.56.0.34) вместо ожидаемого второго.
Используя точки останова и трассировки отладки, я проверил, что правильное значение записывается в файл HOSTS каждый раз. Когда я пытаюсь получить доступ к example.com из браузера или другой программы, он выполняет проверку файла HOSTS и переходит ко второму IP-адресу.
Использование NETMON Я проверил, что запросы идут непосредственно на указанный IP-адрес; нет прокси-сервера HTTP.
Поскольку все остальное почитает измененный файл HOSTS, я сильно подозреваю, что инфраструктура System.Net кэшировала ассоциацию DNS-host-IP для example.com. Однако я не могу найти ссылку на это кеширование и не знаю, как очистить его или отключить.
Я бы приветствовал инструкции по работе с кешем, предложения о том, что еще может вызвать эти симптомы, или другие предлагаемые диагностические шаги, которые могут быть полезны.