无法在ASP.NET中解析DNS(在控制台中工作)

时间:2012-05-31 16:08:12

标签: asp.net dns

当我从桌面上的控制台应用程序调用Dns.GetHostEntry(“SomeServerName”)时,它可以很好地解析IP地址。当我在ASP.NET应用程序中执行相同的代码,也在我的桌面上运行时,我收到一个带有“未知主机”消息的SocketException。

我感觉我的IIS / ASP.NET安装可能有问题,但我现在没时间尝试重新安装。

作为测试,我在machine.config中更改了ASP.NET帐户的标识,以使用我自己的网络凭据,但这没有任何区别。

有什么想法吗?

更新

我似乎需要澄清一下。我在工作站上从ASP.NET进行网络通信时遇到问题。这包括尝试使用SmtpClient发送电子邮件,并尝试通过ODBC连接连接到IBM DB2。在控制台应用程序中运行时,这些都可以正常工作。根本原因似乎是当代码在ASP.NET下运行时,DNS解析失败,尽管我不知道为什么。我能想到的唯一区别是安全环境。

更新2:

以下是运行Wireshark的一些结果: 当从控制台应用程序进行调用时,我立即看到通过网络发送了2个“标准域名系统查询”。 当从ASP.NET应用程序进行相同的调用时,在大约8秒的延迟后,我看到通过网络发送了3个“NetBIOS名称服务查询”。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题解决了:我的工作站上的防病毒程序明确地阻止了来自IIS的传出连接,表面上是为了阻止蠕虫在网络中传播。

答案 1 :(得分:0)

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/2a8ca3c8-e1ec-490a-a7e5-5ec533080f00/

  

如果您将IP地址文字传递给GetHostEntry,它将尝试a   DNS反向解析而不是仅仅返回IP地址。   如果成功反向解析的数据不在您的DNS中   服务器,这将失败。如果你不想要这种语义(即没有   反向查找),然后使用Dns.GetHostAddresses。