2009-11-20 48 views
0

在我編寫的.NET應用程序中,我需要檢測某個特定的URL是否可用。對於使用默認DNS服務器的普通用戶,無效地址最終會拋出WebException。不過,在家裏我正在使用OpenDNS。當我在家中請求無效地址時,自動OpenDNS重定向使.NET相信請求成功。如何檢測DNS服務器何時不給我我請求的地址?檢測.NET中的DNS重定向

下面是一些代碼:看到

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://..."); 
request.AllowAutoRedirect = false; 

try 
{ 
    WebResponse response = request.GetResponse(); 

    using (Stream stream = response.GetResponseStream()) 
    { 
     // Do work 
     ... 
    } 
} 
catch (WebException ex) 
{ 
    // Handle normal errors 
    ... 
} 

回答

2

您是否嘗試過查看返回的HTTP status code

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    using (Stream stream = response.GetResponseStream()) 
    { 
     // Do work 
     ... 
    } 
} 
else 
{ 
    // Error 
} 
+0

這適用於'AllowAutoRedirect = false'。 – 2009-11-20 22:12:01

1

檢查是否WebResponse.ResponseUri值請求的原始URL匹配。 http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.responseuri.aspx

+0

我試過了,但不幸的是它們匹配。 – 2009-11-20 21:55:27

+0

如果'AllowAutoRedirect = false',ResponseUri在哪些情況下不匹配原始URL? – dtb 2009-11-20 21:55:53

+0

由於OpenDNS模擬了一個成功的請求,我懷疑你不需要像David提到的那樣專門查找就可以分辨出來。 – 2009-11-20 22:02:25

0

如果ResponseUri原始URL相匹配,那麼你可以做的最好的是看響應文本,看看它是否「看起來」像OpenDNS的頁面。