3

我有一个分布式网站(.NET、IIS),在世界各地拥有动态数量的服务器。

我想构建一个 [简单] 实用程序,它将位于我们的家庭位置,并且每隔一段时间“ping”网络服务器以查看它们是否可操作。然后,我会将每个服务器的此结果记录到数据库中,以显示当前状态和任何检测到的停机时间的历史记录。

做这个的最好方式是什么?从 .NET 通过 HTTP 连接?我希望这不是太多代码(理想情况下),并作为服务运行。

任何链接或示例代码将不胜感激。

这是标准做法吗?还是分布式应用程序通常会做一些不同的事情?(就像打电话回家而不是被ping)。

4

2 回答 2

3

这是一个与您很接近的问题:

从 C# 应用程序测试网站是否存在的最佳方法

基本上,您可以使用以下代码检查网站状态:

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");
}

至于最好的方法,如果可能的话,我建议您使用电话回家模式。这样你就不必关心谁被添加了。它们只会在他们第一次签到时自动显示。但是,如果您无法完全控制所有网站的代码(或者如果您已经启动了它们),那么使用集中式可能会更好用于测试站点可用性的监控解决方案。这将减少您需要对系统进行的更改量。最后,如果您想真正检查以确保站点处于活动状态,请远程检查,而不是发送“我还活着”的消息。这将确保防火墙等也正常工作,因为站点可能能够发送出去,但可能无法从外部网络访问。

于 2011-05-28T21:10:31.107 回答
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 欢迎页面而不是您希望看到的页面。

于 2011-05-28T21:13:49.817 回答