【发布时间】:2013-03-04 23:13:34
【问题描述】:
我遇到了一个问题,即我的 .NET Web 请求总是针对给定的 CNAME 访问相同的 IP。 CNAME 绑定到多个 IP 地址,每次发生 DNS 查找时,这些 IP 地址都会以随机顺序返回(通过运行 nslookup 确认)。
我写了一个简单的应用来测试这个:
public void TestDNS()
{
while (true)
{
var ipAddress = Dns.GetHostAddresses("mywebsite.com").First().ToString();
Console.WriteLine(string.Format("Current: '{0}' at: '{1}'", ipAddress, DateTime.Now.ToLongTimeString()));
Thread.Sleep(1000);
}
}
我已在 Server 2008 Datacenter、Server 2008 R2 Datacenter、Server 2012、Windows 7 和 Windows 8 上运行此应用程序。所有计算机都有可用的最新更新和服务包。
唯一失败的机器是 Server 2008。其他机器大约每分钟切换一次 IP 地址(TTL 为 1 分钟)。 Server 2008 从不切换(运行了一个多小时)。
需要明确的是,在机器上运行 nslookup 和其他工具似乎表明 DNS 正在返回我所期望的内容。此问题似乎特定于 Server 2008 上的 .NET。
我已尝试此相关answer 中列出的项目,但没有成功。
有什么想法吗?
【问题讨论】:
-
能否让 DNS 服务器为每次调用返回一组完全不同的 IP 地址?这将告诉您是否正在缓存项目,或者是否由于某种原因运行时只是对返回的值进行排序。
-
好主意@JimMischel。我尝试在 .NET 应用程序运行后更改 DNS 记录,但没有任何改变。它似乎没有发现任何 DNS 更改(即永久缓存)。我发现的唯一帮助是更新主机文件。如果我这样做,它会更新正在运行的 .NET 应用程序中的 DNS。
-
方法 GetHostAddresses() 返回一个 IPAddress 类型的数组。看我的回答。
-
我看到了类似的问题。我知道这是一个老问题,但服务器是否托管在云中(如果是的话)?
-
@TheCloudlessSky 祝你好运。如果您在下面错过了它,我使用这个应用程序来解决我们服务器上的问题:github.com/reustmd/HostFileUpdater
标签: .net dns windows-server-2008 .net-4.5