.NET进程使用Windows 7进行DNS查找失败

时间:2010-12-06 16:54:43

标签: .net windows-7

我的应用程序在Windows 7下无法进行DNS查找(System.Net.Dns.GetHostEntry)。此应用程序在XP下运行正常。

生成的错误是套接字错误代码11003:

  

WSANO_RECOVERY   11003个
  这是一个不可恢复的错误。       这表示在数据库查找期间发生了某种不可恢复的错误。这可能是因为无法找到数据库文件(例如,与BSD兼容的HOSTS,SERVICES或PROTOCOLS文件),或者服务器返回了严重错误的DNS请求。

特别有趣的是,此过程直接从网络共享运行。如果我在Win 7下本地运行它,它可以正常工作。

我已经在所有版本的caspol(32位和64位)下给予网络位置完全信任。

是否还有其他.NET或Windows 7安全设置阻止从网络共享位置运行的进程进行DNS查找?

4 个答案:

答案 0 :(得分:3)

原来 caspol。

但是在Windows 7上,只是在管理员组中是不够的。

您还必须右键单击.NET命令提示符快捷方式,然后选择“以管理员身份运行”以绕过UAC。

然后正常的caspol命令将起作用。

答案 1 :(得分:1)

通过从网络共享运行的.Net应用程序连接到SQL Server时遇到类似的问题。

使用Win7 / 2008,您必须阅读,将共享中每个文件夹的文件夹内容列出到应用程序文件夹。如果存在没有任何权限的中间文件夹,则连接失败。

适用于XP。

答案 2 :(得分:0)

如果您要传递IP地址,则值得注意的是,默认情况下,它使用IPv6,根据文档,它将抛出exception

我的建议是使用以下代码获取IPv4地址:

  IPAddress ipv4 = Dns.GetHostAddresses(address).Where(x=>x.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault();

答案 3 :(得分:0)

好的,轻松测试你的dns是否配置正确是在根目录中添加一个html页面。如果此页面按预期呈现,则dns很好。

每个人都有自己的方法来检验,这是完美的,因为我们可以分享我们的经验。我喜欢把我的代码/页面的一些内容放到服务器上,这与我想要一次完成一些内容有关。

希望这会有所帮助......