添加这个以防万一有人遇到同样的问题。这是我使用上面评论中的链接后的解决方案。
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 来制作报告,每当高管需要了解多个不同场景的指标时,例如事情何时出现故障、持续多长时间、是否在黄金时段出现故障等,等等。
希望这可以帮助其他人,如果他们发现同样的问题。