2010-12-06 63 views
6

我有一个应用程序在Windows 7下失败的DNS查找(System.Net.Dns.GetHostEntry)。该应用程序在XP下正常工作。.NET进程无法通过Windows 7进行DNS查询

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

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

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

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

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

+1

感谢您提出这个问题。你的问题告诉我,如果我从本地机器而不是网络驱动器运行我的程序,GetHostEntry将正常工作。:) – 2014-07-31 22:16:52

回答

2

原来这 caspol。

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

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

然后正常的卡斯波尔命令将工作。

0

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

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

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

我实际上使用主机名称,虽然使用IP地址失败并出现相同的错误。关于该链接的说明指出DNS在“Internet区域”中的任何内容上都会自动失败。所以我要调查一下。 – 2010-12-06 17:09:09

+0

安全区域是我的电脑,这样的规则。 – 2010-12-06 19:05:00

0

好吧,如果你的DNS配置正确是在根目录下添加一个HTML页面轻松测试。如果这个页面按预期呈现,那么dns是好的。

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

希望这有助于...

1

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

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

适用于XP。