TcpClient正在连接到不可用的服务
本文关键字:服务 连接 TcpClient | 更新日期: 2023-09-27 18:28:30
到目前为止,我的代码是
`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。如果我通过浏览器导航到这里,我会得到
服务不可用
HTTP错误503。该服务不可用。
但如果我运行代码,它会连接并打印"主机已启动"
请告知我在步骤中遗漏了什么。
添加此项以防任何人遇到相同的问题。这是我使用了上面评论中的链接后的解决方案。
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来做一份报告,这些场景包括:事情何时发生、持续多久、是否在黄金时段发生等。
希望这能帮助其他人,如果他们发现同样的问题。