我有一個ASP.NET應用程序,我經常用HttpWebRequest
來讀取網頁的內容。遠程地址沒有問題,我的應用程序始終工作正常。間歇性'遠程名稱無法解析'?
雖然我不改變任何東西,有時(約每天一次)我得到這個錯誤:
the remote name could not be resolved.
爲什麼以前解析DNS名稱有時無法得到解決?
我有一個ASP.NET應用程序,我經常用HttpWebRequest
來讀取網頁的內容。遠程地址沒有問題,我的應用程序始終工作正常。間歇性'遠程名稱無法解析'?
雖然我不改變任何東西,有時(約每天一次)我得到這個錯誤:
the remote name could not be resolved.
爲什麼以前解析DNS名稱有時無法得到解決?
這種間歇性很難解決,它將會改變配置而不是代碼解決方案。 (提示:讀取所有內容;)
我猜測遠程服務器DNS設置爲經常過期。可能每天或甚至每12小時左右。這是TTL(生存時間)設置。如果管理員需要將網站快速遷移到新服務器,有時會將其設置爲人爲低級別。
您可以決定如何經常失效的方法是:打開命令提示符,然後運行:
nslookup
set debug
www.theserverdomain.com
在此之上將是一個部分,說:「規範記錄:」有,說其下一個項目「TTL」。
現在(我正在做一個有教養的猜測),當你查詢你的DNS服務器來解析該主機名時,你的服務器將會緩存這個值,可能發生了什麼。
但是,一旦它到期,您的服務器將不得不聯繫另一臺服務器上游以獲取IP地址解析,稱爲DNS轉發。如果您和遠程服務器之間存在大量跳轉,或者站點之間的某個DNS服務器超載,則它可能會超時併發回您收到的消息。
如果這是真的,那麼你可以做的唯一事情就是硬編碼你的Web服務器主機文件中的DNS和IP地址組合。這通常在C:\Windows\System32\drivers\etc
,是一個名爲「hosts」的文件。有一個例子說明如何在文件本身中正確編輯它。
一旦您在該文件中創建主機映射,您的Web服務器將不再需要聯繫DNS服務器來執行名稱解析,並且TTL設置的內容無關緊要。
這裏唯一的危險是他們將網站移動到新的IP地址。在這一點上,你可以簡單地再次更新您的主機文件...
我要檢查的第一件事是DNS是否不再正確配置或發生故障。
嘗試(從Windows命令行)
nslookup MyDnsNameHere
,看看你得到你所期望的IP。
感謝*問題標題*和您的完整答案。選中:'TTL'設置爲2天。現在,是否有可能在我的應用程序中使用我的小緩存?我的意思是,解析DNS並將它們保存在內存中,直到下一次卸載/加載應用程序域。我需要一個最小網站管理員交互的解決方案(仍然主機解決方案對我來說足夠好)。 – Xaqron 2011-04-11 00:48:24
@Xaqron:因爲所有的分辨率都發生在操作系統級別,所以唯一真正的辦法是通過主機文件;除非有問題的服務器只能通過IP地址訪問時才能作出響應。 – NotMe 2011-04-11 04:45:04