1

我需要编写一个简单的 WinForms 应用程序,可以触发该应用程序来测试网站是否仍然存在以及该网站是否能够从数据库中读取。

我在c#中使用整个“(HttpWebResponse)myHttpWebRequest.GetResponse()”来测试网站是否还活着,但是我不知道如何在我的网站中获得一个测试页面来写一些东西到“响应”表明它能够测试它自己与数据库的连接。

这是我的 Winforms 端的示例代码(从 MSDN 中提取):

私人无效 CheckUrl()
{
  尝试
  {
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com");

    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    myHttpWebResponse.Close();

    label1.Text = myHttpWebRequest.Address.AbsoluteUri;
  }
  捕获(WebException e)
  {
    label1.Text = "这个程序应该在成功运行时抛出 WebException。" +
                                    "\n\n异常消息:" + e.Message;

    if (e.Status == WebExceptionStatus.ProtocolError)
    {
      label1.Text = String.Format("状态码:{0}", ((HttpWebResponse)e.Response).StatusCode);
      label2.Text =String.Format("状态描述:{0}", ((HttpWebResponse)e.Response).StatusDescription);
    }
  }
  捕获(异常 e)
  {
    label1.Text = e.Message;
  }
}

我希望在 webform 方面得到一些帮助,以返回到上面的代码。

感谢你们提供的任何帮助。

  • 理查德
4

4 回答 4

2

您可以在名为 IAMALIVE 的项目中创建一个 Web 服务,并让它返回一个字符。

在您的 WinForms 区域,使用上述 WebService,如果它有效,则您的网站还活着。

于 2009-09-16T01:36:00.363 回答
2

Papuccino 回答的本质是:您实际上可以通过使用[WebMethod]属性标记它们来创建嵌入在 WebForms 页面的 C# 代码隐藏中的 Web 服务。这些将驻留在 Web 应用程序中,而不仅仅是服务器。

于 2009-09-16T01:46:52.367 回答
1

当您的网站出现故障时会发生什么?它是否返回 500 状态码或超时?

另一种看待它的方式:如果成功,它是否总是做一些预期的事情?

您可能会在您的 Web 应用程序中调用一个 URL,您知道该 URL 将返回 200 响应代码,或者如果一切正常,响应中将包含一些预期的 HTML 标记。

让您的 winform 调用此 URL 并检查 Response.status 或输出缓冲区中的文本以获取您预期的标记。您还应该在 httprequest 中创建超时。如果页面未在超时内加载,您将收到一个 Web 异常,您将知道该站点出现故障。

此外,如果您有预算,还有像 gomez.com 这样的外部监控服务可以自动执行此操作并提供有关站点可用性的报告。

于 2009-09-16T01:55:50.207 回答
1

让您的 Web 表单页面打开数据库连接并执行一些简单/低影响的操作,例如

select SystemTableId from dbo.[SystemTable] where SystemTableId = 1

其中 SystemTable 是单行表。

如果页面出于任何原因抛出异常,则 Response.Write 异常消息,否则 Response.Write("SUCCESS") 或类似的。

于 2009-09-16T02:22:32.510 回答