ping Web服务器以查看是否可操作/活动的简单方法



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

我想建立一个[简单]的实用程序,它将放在我们的家里,并经常"ping"网络服务器,看看它们是否可以运行。然后,我将把每个服务器的结果记录到数据库中,以显示检测到的停机时间的当前状态和历史记录。

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

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

这是标准做法吗?或者分布式应用程序通常会做一些不同的事情?(比如给家里打电话,而不是被ping)。

这里有一个与您相近的SO问题:

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

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

您可以使用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欢迎页面,而不是您期望看到的页面。

最新更新