ping webserver的简单方法,看看是否可操作/活着?

时间:2011-05-28 21:05:00

标签: .net iis health-monitoring

我有一个分布式网站(.NET,IIS),它在全球拥有动态数量的服务器。

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

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

非常感谢任何链接或示例代码。

这是标准做法吗?或者分布式应用通常做些不同的事情? (比如打电话回家,而不是被捏住)。

2 个答案:

答案 0 :(得分:3)

这是一个与您关系密切的问题:

Best way to test if a website is alive from a C# applicaiton

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

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

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

答案 1 :(得分: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欢迎页面而不是您希望看到的页面。