为什么我的 C# 应用程序中的 Dns.Resolve 在 W2008R2 上需要 x3?

为什么我的 C# 应用程序中的 Dns.Resolve 在 W2008R2 上需要 x3?

我有 C# 代码在 W2008R2 上的执行时间比在 W7 上的执行时间长 3 倍。

代码非常简单(获取主机名):

        Stopwatch sw = new Stopwatch();
        sw.Start();

        IPHostEntry ip = Dns.Resolve(Dns.GetHostName());
        string s = ip.HostName;

        sw.Stop();

        Console.WriteLine(sw.ElapsedTicks);
        Console.WriteLine(s);

我确实在 W2008 上停止了一些服务。可能是我不小心停止了某些有助于传播 DNS 通知之类的东西...

有什么想法吗?

编辑:抱歉我还没说。x3 的意思是:在 W7 上需要 <1ms,在 W2008 上需要 2 或 9ms... 这其实与超时无关。

答案1

当您尝试解析该名称(或任何其他名称)时会发生什么外部你的程序,fe使用pingnslookup

无论操作系统如何,应用程序在两台计算机上的运行效果都应该完全相同,因此这很可能是 DNS 问题。如果计算机的名称未在计算机正在使用的 DNS 服务器中注册,或者计算机无法访问其配置的所有 DNS 服务器,或者服务器无法解析名称,或者(这里还有许多其他可能的问题),查询将失败和/或超时,并且只有然后它将使用本地hosts文件来解析。

您一定要检查您的 DNS 配置。

相关内容