2010-12-06 62 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。