Перезапись файла Hosts не обновляет следующее IP-соединение - PullRequest
0 голосов
/ 18 февраля 2011

У нас есть написанное приложение на C #, которое связывается с любой группой IP в облаке. Любой из которых может не работать. Мы используем URL-адрес этого адреса, поскольку сервер IIS ожидает имя заголовка узла для маршрутизации на правильный интерфейс приложения.

Итак, мы установили файл Hosts так, чтобы URL указывал на IP. Затем мы отправляем команду по URL, чтобы вернуть время сервера.
Это говорит нам, что соединение работает.

Если мы не получаем ответ, мы предполагаем, что связь разорвана. Затем мы записываем новый IP из списка в файл Hosts и пытаемся снова.

Это где мы попали в ошибку. Приложение, похоже, не видит, что файл Hosts изменился, и использует старый (плохой) IP.

Кэширование в приложении отсутствует, поэтому мы предполагаем, что Windows кеширует для нас.

Мы попытались очистить кеш:

ipconfig / flushdns arp -d * nbtstat -R

У нас все та же проблема. Есть мысли как очистить кеш?

1 Ответ

1 голос
/ 18 февраля 2011

Если вы не можете решить эту проблему на стороне сервера (например, балансировщик нагрузки и т. Д.), Просто используйте список IP-адресов в своем коде:

var req = HttpWebRequest.Create("http://" + IPAdd.ToString() + "/path_to_query_time");
((HttpWebRequest)req).Host = "yourhostheaderhere";
var resp = req.GetResponse();
//If things have gone wrong here, change IPAdd to the next IP address and start over.

Не связывайтесь с настройками пользователей, чтобы попытаться решить проблему в вашем приложении, которую вы сами создали.

...