2011-02-01 31 views
2

我想檢查網址的狀態代碼而不使用IP地址,因爲我有很多配置了相同IP的網站,並且只有主機名對他們不同。 HttpWebRequest解析IP地址並使用它。NET:在不使用IP地址的情況下檢查URL的響應狀態代碼

是否有替代方案?

+0

你想達到什麼目的? – 2011-02-01 14:31:37

+3

如果沒有或解析IP地址,則無法通過TCP/IP進行通信。我有充分的理由相信HttpWebRequest類的行爲正確,解析IP地址,並使用Host頭來指示它嘗試與之通信的「主機名」。那麼,你遇到什麼樣的實際問題會導致你相信它被破壞了? – 2011-02-01 14:41:53

回答

2

在對MSDN上市HttpWebRequest類的代碼示例:

HttpWebRequest myReq = 
    (HttpWebRequest)WebRequest.Create("http://www.contoso.com/"); 

不需要IP。

編輯:
作爲一個測試,我把它變成扔掉的應用程序,我有:

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://domain1.mylocalhost.com/"); 

HttpWebRequest myReq2 = (HttpWebRequest)WebRequest.Create("http://domain2.mylocalhost.com/"); 

WebResponse myReqResponse = myReq.GetResponse(); 
WebResponse myReq2Response = myReq2.GetResponse(); 

long x = myReqResponse.ContentLength; 
long y = myReq2Response.ContentLength; 

MessageBox.Show((x == y).ToString()); 

我DOMAIN1指向有效的網站,其功能。我有domain2指向一個網站,提供所有請求的錯誤500。兩者都在同一個IP上。上面的代碼會爲myReqResponse生成一個17320的內容長度,而myReq2Response會拋出一個異常,導致錯誤500. IP地址不是必需的,幕後的解析不會影響其行爲。

0

我已經建立了一個包含主機標題名稱的網站。顧名思義,它是來自客戶端的頭文件,它導致它到達服務器上的正確站點。如果未提供標題,則服務器將不會路由到正確的站點。

您是否嘗試將主機標頭添加到請求的標頭集合中?

Dim req As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create("http://www.whatever.com/"), System.Net.HttpWebRequest) 
req.Headers.Add("Host", "www.whatever.com") 

您可以使用http://web-sniffer.net/,以確定您可能需要通過得到這個工作有什麼其他頭。

相關問題