【问题标题】:Intermittent 'the remote name could not be resolved'?间歇性“无法解析远程名称”?
【发布时间】:2011-04-09 08:45:58
【问题描述】:

我有一个 ASP.NET 应用程序,我经常用它来通过HttpWebRequest 读取网页的内容。远程地址没有问题,我的应用程序一直运行良好。

虽然我没有进行任何更改,但有时(大约每天一次)我会收到此错误:

the remote name could not be resolved.

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

【问题讨论】:

    标签: asp.net httpwebrequest dns


    【解决方案1】:

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

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

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

    nslookup
    set debug
    www.theserverdomain.com
    

    在此顶部将显示“授权记录:”的部分,其下方有一个显示“ttl”的项目。

    现在,(我在这里做出有根据的猜测),当您查询 DNS 服务器以解析该主机名时,您的服务器可能会缓存该值。

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

    如果这是真的,那么您唯一能做的就是在您的 Web 服务器主机文件中硬编码 DNS 和 IP 地址组合。这通常位于C:\Windows\System32\drivers\etc,是一个名为“hosts”的文件。有一个关于如何在文件本身中正确编辑它的示例。

    在该文件中创建主机映射后,您的网络服务器将不再需要联系 DNS 服务器来执行名称解析,并且 TTL 设置为什么也没有关系。

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

    【讨论】:

    • 感谢您的问题标题和您的完整回答。选中:TTL 设置为 2 天。现在,是否有可能以某种方式将我的小缓存放在我的应用程序中?我的意思是,解析 DNS 并将它们保存在内存中,直到下一次卸载/加载应用程序域。我需要一个与网站管理员交互最少的解决方案(对于我来说,主机解决方案仍然足够好)。
    • @Xaqron:因为所有解析都发生在操作系统级别,所以唯一真正的方法是通过主机文件;除非相关服务器在仅通过 IP 地址访问时可以响应。
    【解决方案2】:

    我首先要检查的是 DNS 是否不再正确配置或出现故障。

    尝试(从 Windows 命令行)

    nslookup MyDnsNameHere
    

    看看你是否得到了你想要的IP。

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2016-05-31
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多