【发布时间】:2009-03-03 19:48:13
【问题描述】:
我想创建一个小型 Windows 应用程序,它会在每个时间段自动转到我的站点并检查它是否运行正常,如果发现它已关闭、不工作或出现错误“示例:404、网络错误、连接到 db失败”它会在我的屏幕上显示一条消息。
我如何知道使用任何 .NET 语言以编程方式存在错误?
【问题讨论】:
-
当然,任何程序都会受制于您所在的网络。
标签: c# .net asp.net vb.net web
我想创建一个小型 Windows 应用程序,它会在每个时间段自动转到我的站点并检查它是否运行正常,如果发现它已关闭、不工作或出现错误“示例:404、网络错误、连接到 db失败”它会在我的屏幕上显示一条消息。
我如何知道使用任何 .NET 语言以编程方式存在错误?
【问题讨论】:
标签: c# .net asp.net vb.net web
使用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 的 Tick 事件或定期进行检查的东西。
【讨论】:
何必呢?你可以从像RedAlert这样的提供商那里以便宜的价格获得更好的解决方案
这样做的好处是:
1) 它从防火墙外部测试您的站点,因此可以检测到更广泛的问题。
2) 它是一个公正的第 3 方,因此如果您需要 SLA,您可以证明正常运行时间。
3) 只需支付少量费用,您就可以尝试诊断问题。
4) 出现问题时,它可以寻呼或发送电子邮件给您。
5) 您无需调试新服务器。
天啊,我听起来像是在为这些家伙打广告,但我保证我不会为他们工作或获得回扣。我刚刚对我们服务器的服务感到满意。
顺便说一句:我检查了定价,每个站点/月约为 20 美元。因此,您可能会在比自己构建它所需的时间更短的时间内支付一年的服务费用。
【讨论】:
想要执行与我第一次研究第三方解决方案时相同的功能。一项免费且相当准确的特定服务是MonitorUs。
但是,如果您想构建自己的,那么我会提出一项建议。考虑使用 Head 请求而不是 get 请求:
HEAD 方法与 GET 相同 除了服务器不能返回 响应中的消息正文。这 HTTP 中包含的元信息 响应 HEAD 请求的标头 应该与信息相同 为响应 GET 请求而发送。 该方法可用于获取 关于实体的元信息 由请求暗示而没有 转移实体主体本身。 这种方法常用于测试 有效性的超文本链接, 可访问性和最近 修改。 w3.org
这是a link to Peter Bromberg's 文章,它解释了如何在 C# 中执行 Head 请求。
【讨论】:
使用 System.Net.WebClient 对象。它比 HttpWebRequest 更容易使用。它有一个“DownloadString”方法,可以将 URL 的内容下载到字符串中。如果服务器返回 500,该方法也可能抛出 WebException 错误。对于其他错误,您可以解析字符串并查找关键字。
【讨论】:
使用 HttpWebRequest,并将其包装在 WebException 的 try catch 中。异常对象中的错误代码将为您提供代码。 404等。如果是500,你可以打印消息。
【讨论】:
如果你这样做,创建一个特殊的页面来运行任何特殊的子系统,比如数据库、文件 IO 等,并以纯文本而不是 html 的形式提供结果。这将使您能够更轻松地解析返回的数据,并且还可以捕获可能不会给您 404 或 500 HTTP 错误的 DB 或 IO 问题。
【讨论】:
试试 Adventnet 的应用程序管理器 (http://www.manageengine.com/products/applications_manager/),它可免费用于 5 台显示器,并提供出色的监控功能
您可以配置在发送电子邮件等失败时可以执行的操作。
【讨论】:
如果您希望在网站出现故障时接收电子邮件/短信,请尝试Are My Sites Up 基于网络的解决方案。
【讨论】: