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

我正在使用 C# 中的整个“(HttpWebResponse)myHttpWebRequest.GetResponse()”来测试该网站是否还活着,但我不知道如何在我的网站中获取测试页面以向“响应”写入内容表明它能够测试它自己与数据库的连接。

这是我的 Winforms 端的示例代码(摘自 MSDN):

private void CheckUrl()
{
  try
  {
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com");

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

    label1.Text = myHttpWebRequest.Address.AbsoluteUri;
  }
  catch (WebException e)
  {
    label1.Text = "This program is expected to throw WebException on successful run." +
                                    "\n\nException Message :" + e.Message;

    if (e.Status == WebExceptionStatus.ProtocolError)
    {
      label1.Text = String.Format("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
      label2.Text =String.Format("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
    }
  }
  catch (Exception e)
  {
    label1.Text = e.Message;
  }
}

我希望在网络表单方面获得一些帮助,以返回到上面的代码。

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

  • 理查德
有帮助吗?

解决方案

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

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

您可以在 Web 应用程序中调用一个 URL,您知道该 URL 要么返回 200 响应代码,要么在响应中包含一些预期的 HTML 标记(如果一切正常)。

让您的 winform 调用此 URL 并检查 Response.status 或输出缓冲区中的文本是否有您期望的标记。您还应该在 httprequest 中创建超时。如果页面在超时时间内未加载,您将收到网络异常,并且您将知道该网站出现故障。

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

其他提示

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

在您的 WinForms 区域中,使用所述 WebService,如果它有效,则您的网站处于活动状态。

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

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

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

其中 SystemTable 是单行表。

如果页面因任何原因引发异常,则 Response.Write 异常消息,否则 Response.Write("SUCCESS") 或类似内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top