【问题标题】:TcpClient connecting to unavailable serviceTcpClient 连接到不可用的服务
【发布时间】:2014-10-30 14:12:56
【问题描述】:

到目前为止我的代码是

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

我正在测试的 ipAddress 和端口是一个通过 IIS 运行的 DEV 站点。我已停止此站点的 AppPool。如果我通过浏览器导航到这里,我会得到 ​​p>

服务不可用

HTTP 错误 503。服务不可用。

但如果我运行代码,它会连接并打印“主机已启动”

请告知我在该步骤中缺少的内容。

【问题讨论】:

  • 您只是测试机器是否可以接受 tcp 连接,而不是 Web 服务器是否能够处理请求。如果 TCP 连接不起作用,则 Web 服务器无法返回 503 不可用响应。
  • 好的,那么正常运行时间监视器的这些方面比 TcpClient 更有效并捕获 503 错误? stackoverflow.com/questions/10107305/…
  • 我不知道“更高效”,但根据该链接发送 HTTP 请求会告诉您 Web 服务器是否能够处理请求。
  • 感谢您的帮助。

标签: c# tcpclient uptime-monitoring


【解决方案1】:

添加这个以防万一有人遇到同样的问题。这是我使用上面评论中的链接后的解决方案。

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 来制作报告,例如事情何时出现故障、持续多长时间、是否在黄金时段出现故障等。

希望这可以帮助其他人,如果他们发现同样的问题。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2014-08-05
    • 2014-08-19
    • 2012-12-14
    • 2013-12-13
    • 2016-04-01
    • 1970-01-01
    • 2022-11-19
    • 2023-03-09
    相关资源
    最近更新 更多