我的应用程序在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查找?
答案 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很好。
每个人都有自己的方法来检验,这是完美的,因为我们可以分享我们的经验。我喜欢把我的代码/页面的一些内容放到服务器上,这与我想要一次完成一些内容有关。
希望这会有所帮助......