2011-05-28 80 views
3

我有一個分佈式網站(.NET,IIS),它擁有世界各地的動態服務器數量。簡單的方法來ping網絡服務器,看看是否運作/活着?

我想要建立一個[簡單]實用程序,它將坐在我們的家中,並且每隔一段時間就會「ping」web服務器以查看它們是否可操作。然後我會將每個服務器的這個結果記錄到數據庫中,以顯示當前狀態和任何檢測到的停機時間的歷史記錄。

這樣做的最好方法是什麼?通過HTTP從.NET連接?我希望這不是太多的代碼(理想情況下),並作爲服務運行。

任何鏈接或示例代碼將不勝感激。

這是標準做法嗎?或者分佈式應用程序通常會做不同的事情(如電話回家,而不是被釘死)。

回答

3

下面是一個SO問題是接近你:

Best way to test if a website is alive from a C# applicaiton

基本上,你可以使用下面的代碼檢查網站的狀態:

WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx"); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response == null || response.StatusCode != HttpStatusCode.OK) 
{ 
    Console.WriteLine("You have a problem"); 
} 

至於最好的辦法做到這一點,如果可能出現在你的情況下,我會建議你使用手機模式。這樣你就不必關心誰加了。他們只會在第一次登記時自動顯示。但是,如果您沒有完全控制所有網站的代碼(或者您已經啓動了他們的代碼),那麼最好採用集中式監測解決方案,測試網站的可用性。這將減少您需要對系統進行的更改。最後,如果你想真正檢查一下網站是否有效,請遠程檢查,而不是發出「我還活着」的信息。這樣可以確保防火牆等也可以工作,因爲網站可能會發送出去,但可能無法從外部網絡訪問。

+0

真棒的答案。非常非常簡單。它會教我關於HTTPWebResponse。 – pearcewg 2011-05-28 21:13:49

0

你可以使用WebRequest這個類。

var request = WebRequest.Create("http://google.com"); 
using (var response = request.GetResponse()) 
using (var streamReader = new StreamReader(response.GetResponseStream())) 
{ 
    var responseText = streamReader.ReadToEnd(); 

    // validate that responseText has content that you would expect 
} 

我建議檢查頁面內容以確保您的網站部署正確。如果網站被錯誤地重新部署,網站可以返回StatusCode HttpStatusCode.OK,同時顯示IIS歡迎頁面而不是您希望看到的頁面。

相關問題