2014-10-30 44 views
0

到目前爲止我的代碼是TcpClient的連接不可用的服務

`tcpClient = new TcpClient(); 
tcpClient.Connect(ip.IpAddress, Convert.ToInt32(ip.Port)); 
if (tcpClient.Connected) 
{ 
    Console.WriteLine("Host is up"); 
    Console.ReadKey(); 
} 
else 
{ 
    UpdateDowntime(ip); 
}` 

的ip地址和端口,我測試是通過IIS運行DEV網站。我已經停止AppPool的這個網站。如果我通過瀏覽器瀏覽到這一點,我得到

服務不可用

HTTP錯誤503服務不可用。

但是,如果我運行代碼它連接並打印「主機已啓動」

請告知我在一步很想念。

+1

您只是測試機器是否可以接受TCP連接,而不是Web服務器是否能夠處理請求。如果TCP連接不起作用,則Web服務器無法返回503不可用的響應。 – 2014-10-30 14:19:43

+0

好的,那麼正常運行時間監視器上的這些內容與TcpClient和捕獲503錯誤的效率更高有關? http://stackoverflow.com/questions/10107305/httpwebrequest-error-503-server-unavailable – 2014-10-30 14:24:34

+0

我不知道「更有效」,但根據該鏈接發送HTTP請求會告訴你Web服務器是否能夠處理請求是。 – 2014-10-30 14:28:22

回答

0

如果有人遇到同樣的問題,請添加此項。這是我在上面評論中使用鏈接後的解決方案。

foreach (var ip in ipAddressList) 
{ 
    HttpWebResponse myHttpWebResponse = null; 
    try 
    { 
     var myUri = new Uri(ip.Url); 
     // Create a 'HttpWebRequest' object for the specified url. 
     var myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri); 
     // Set the user agent as if we were a web browser 
     myHttpWebRequest.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"; 
     myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
     // Release resources of response object. 
     myHttpWebResponse.Close(); 
    } 
    catch (WebException ex) 
    { 
     // If we get here, port is not open, or host is not reachable 
     UpdateDowntime(ip, ex.Message); 
    } 
    finally 
    { 
     if (myHttpWebResponse != null) 
     { 
      myHttpWebResponse.Close(); 
     } 
    } 
} 

內UpdateDowntime(),我加載服務結果到數據庫時的URL是無法訪問所以這可以被報告,並創建一個任務計劃程序任務此運行每5分鐘。它還會在服務關閉時發送電子郵件。告訴哪些服務停機,什麼時候響應錯誤和響應錯誤。

我的最終結果將是使用SSRS作報告時主管需要知道的多種不同的方案指標時,事情去了,多長時間,如果他們是在黃金時間下來,等等等等

希望這可以幫助別人,如果他們發現相同的問題。