2012-08-17 164 views
0

我需要檢查給定主機是否正在回覆HTTP Web請求。 所以,我需要做的只是HttpWebRequest.Create(someURI)並檢查響應,對吧?HttpWebRequest.Create和防火牆

HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(targetUri); 

TimeSpan timeOut = TimeSpan.FromSeconds(timeOutInSeconds); 
webRequest.Timeout = (int)timeOut.TotalMilliseconds; 
webRequest.Proxy = proxy; 
webRequest.AllowAutoRedirect = false; // get extra information with this turned off, but doesn't affect the problem 

response = webRequest.GetResponse() as HttpWebResponse; 

嗯,在拿出的問題是,如果someURI是由我們的防火牆阻塞(如「gibber.com」被阻止),然後我得到一個有效的HttpWebResponse,不投,和ResponseURI屬性設置爲阻止的URI(「gibber.com」),即使它實際上是我們的服務器響應。

在HTTP標頭中會有一個定位鍵,它的值是本地服務器的IP地址。但是我不想解析文本來確定請求是否實際被反彈。什麼是正確的方法來做到這一點?

感謝

+0

爲什麼你不想解析文本? – 2012-08-17 16:34:31

+0

解析文本很簡單,但看起來不太健壯。它只是噴出n個標題,其中一個恰好包含服務器的IP。 如果我知道總是會有一個被封鎖的URL的位置標題,並且它始終是服務器/網關的地址,那麼它將會很好。但我不知道。 – Mijin 2012-08-17 19:39:58

回答

0

檢查,看是否response.ResponseUri對應於給定主機或防火牆。

+0

response.ResponseUri是被阻止的URL。 – Mijin 2012-08-17 19:37:00

+0

我不得不在這個餐廳吃足夠的餡餅,因爲我以爲ResponseURI錯誤地返回了所需的主人,實際上它被阻止了。事實上,這個特定的主機並未被阻止傳出,而僅僅基於傳入時的內容,所以這裏的ResponseURI實際上是準確的。 – Mijin 2012-09-03 12:50:57