我想创建一个小的Windows应用程序将自动转到我的网站的每个时间段,并检查它是否正常运行,如果它发现它失效,不工作或有错误“示例:404,网络错误,连接到数据库失败“它会在我的屏幕上显示一条消息。
我如何知道使用任何.NET语言编程时出现错误?
答案 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基于网络的解决方案。