0

我们编写了一个 C# 应用程序,可以与云中的一组 IP 中的任何一个进行通信。其中任何一个都可能无法正常工作。我们使用地址的 URL,因为 IIS 服务器需要主机头名称,以便路由到正确的应用程序接口。

因此,我们将 Hosts 文件设置为将 URL 指向 IP。然后我们在 URL 上发送一个命令来取回服务器时间。
这告诉我们连接正在工作。

如果我们没有得到响应,我们就认为连接已经死了。然后,我们将列表中的新 IP 写入 Hosts 文件,然后再试一次。

这是我们遇到错误的地方。该应用程序似乎没有看到 Hosts 文件已更改并使用旧(坏)IP。

应用程序中没有内置缓存,因此我们假设 Windows 正在为我们缓存。

我们尝试使用以下方法刷新缓存:

ipconfig /flushdns arp -d * nbtstat -R

我们仍然遇到同样的问题。关于如何清除缓存的任何想法?

4

1 回答 1

2

如果您无法在服务器端解决此问题(例如负载平衡器等),则只需在代码中使用 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.

不要乱用用户设置来尝试解决您自己制作的应用程序中的问题。

于 2011-02-18T13:45:35.353 回答