我的网站是否已关闭,无法正常运行或有错误?

时间:2009-03-03 19:48:13

标签: c# .net asp.net vb.net web

我想创建一个小的Windows应用程序将自动转到我的网站的每个时间段,并检查它是否正常运行,如果它发现它失效,不工作或有错误“示例:404,网络错误,连接到数据库失败“它会在我的屏幕上显示一条消息。

我如何知道使用任何.NET语言编程时出现错误?

8 个答案:

答案 0 :(得分:7)

使用WebClient非常容易。它看起来像这样:

    WebClient client = new WebClient();
    try
    {
        string response =
            client.DownloadString("http://www.example.com/tester.cgi");

        // We at least got the file back from the server

        // You could optionally look at the contents of the file
        // for additional error indicators      
        if (response.Contains("ERROR: Something"))
        {
            // Handle
        }
    }
    catch (WebException ex)
    {
        // We couldn't get the file.
        // ... handle, depending on the ex
        //
        // For example, by looking at ex.Status:
        switch (ex.Status)
        {
            case WebExceptionStatus.NameResolutionFailure:
                // ...
            break;
            // ...
        }
    }

您可以将其挂钩到Timer的{​​{1}}事件或其他事情,以便定期进行检查。

答案 1 :(得分:5)

为什么要这么麻烦?您可以从RedAlert

等提供商那里获得更便宜的解决方案

关于这个的好处是:

1)它从防火墙外部测试您的站点,因此它可以检测到更多种类的问题。

2)这是一个公正的第三方,因此如果您需要SLA,您可以证明正常运行时间。

3)对于小额保费,您可以尝试并诊断问题。

4)当出现问题时,它可以给您发电子邮件或发送电子邮件。

5)您无需委托新服务器。

Geez,我听起来像是这些家伙的广告,但我保证不为他们工作或获得回扣。我对服务器的服务感到满意。

顺便说一句:我检查了价格,每个网站每月约20美元。因此,您可以花费更少的时间来支付一年的服务费用,而不是自己构建服务。

答案 2 :(得分:3)

我希望执行相同的功能,我首先考虑了第三方解决方案。一个免费且相当准确的特定服务是MonitorUs

但是,如果你想建立自己的,那么我会有一个建议。考虑使用Head请求而不是get请求:

  

HEAD方法与GET相同   除了服务器不能返回   响应中的消息正文。该   HTTP中包含的元信息   响应HEAD请求的标头   应该与信息完全相同   发送以响应GET请求。   该方法可用于获得   关于实体的元信息   没有提出要求所暗示的   转移实体 - 身体本身。   此方法通常用于测试   有效性的超文本链接,   可访问性,最近   修改。 w3.org

这是a link to Peter Bromberg's文章,解释了如何在C#中执行Head请求。

答案 3 :(得分:2)

使用HttpWebRequest,并将其包装在WebException的try catch中。异常对象中的错误代码将为您提供代码。 404等。如果是500,则可以打印消息。

答案 4 :(得分:2)

使用System.Net.WebClient对象。它比HttpWebRequest更容易使用。它有一个“DownloadString”方法,可以将URL的内容下载到字符串中。如果服务器返回500,该方法也可能抛出WebException错误。对于其他错误,您可以解析字符串并查找关键字。

答案 5 :(得分:1)

如果这样做,请创建一个特殊页面来运行任何特殊的子系统,如数据库,文件IO等,并以纯文本而不是html提供结果。这将允许您更容易地解析返回的数据,并且还会捕获可能无法提供404或500 HTTP错误的DB或IO问题。

答案 6 :(得分:1)

尝试使用Adventnet的应用程序管理器(http://www.manageengine.com/products/applications_manager/),它可以免费使用5台显示器,并提供出色的监控功能

您可以配置发送电子邮件等失败时可以执行的操作。

答案 7 :(得分:0)

如果您希望在网站停用时收到电子邮件/短信,请尝试Are My Sites Up基于网络的解决方案。