间歇'远程名称无法解决'?

时间:2011-04-08 23:35:53

标签: asp.net httpwebrequest dns

我有一个ASP.NET应用程序,用于经常HttpWebRequest读取网页的内容。远程地址没有问题,我的应用程序始终正常工作。

虽然我没有改变任何东西,但有时(大约每天一次)我得到这个错误:

the remote name could not be resolved.

为什么以前解析的DNS名称有时无法解析?

2 个答案:

答案 0 :(得分:10)

这种间歇性的解决方案将非常难以解决,而且需要进行配置更改而不是代码解决方案。 (提示:阅读所有内容;)

我猜想远程服务器DNS设置为经常过期。可能每天或甚至每12个小时左右。这是TTL(生存时间)设置。如果管理员需要能够将网站快速移动到新服务器,则有时会将其设置为人为的低级别。

您可以通过转到命令提示符并运行来确定它到期的频率:

nslookup
set debug
www.theserverdomain.com

最重要的部分是“AUTHORITY RECORDS:”,其下有一个名为“ttl”的项目。

现在,(我在这里做了一个有根据的猜测),当您查询DNS服务器以解析服务器将缓存此值的主机名时,可能会发生什么。

但是,一旦它到期,您的服务器将不得不联系上游的另一台服务器以获取IP地址解析,称为DNS转发。如果您和远程服务器之间有很多跳,或者如果站点之间的某个DNS服务器超载,那么它可能会超时并发回您收到的消息。

如果这是真的,那么您可以做的唯一事情是在Web服务器主机文件中对DNS和IP地址组合进行硬编码。这通常是C:\Windows\System32\drivers\etc,是一个名为“hosts”的文件。有一个例子说明如何在文件本身中正确编辑它。

在该文件中创建主机映射后,您的Web服务器将不再需要联系DNS服务器来执行名称解析,并且TTL的设置无关紧要。

这里唯一的危险是他们将网站移动到新的IP地址。此时您可以再次更新主机文件...

答案 1 :(得分:1)

我要检查的第一件事是DNS是否不再正确配置或出现故障。

尝试(从Windows命令行)

nslookup MyDnsNameHere

看看你是否得到了你期望的IP。

相关问题