健康检查、ASP.NET Web API

Cam*_*cia 9 .net c# asp.net-web-api asp.net-web-api2 health-check

在我的工作中,我被要求对用 C# 编写的 ASP.NET Web API 2 实施运行状况检查。我已经搜索过,但所有文档都是针对 ASP.NET Core 及其实现的,有谁知道如何在经典/完整的 .NET Framework 中实现运行状况检查功能?

小智 7

我同意伊戈尔的观点。这是他建议的具体应用(显然,还有其他方法可以做到这一点,但这是我知道如何保持清晰并尊重关注点分离的最佳方法):

  1. 创建一个新控制器。在此示例中,我将其称为 HealthController
  2. 在控制器中添加一个action,并用[HttpGet]进行注释
  3. 将逻辑放置在检查外部依赖项稳定性的操作中。例如,如果磁盘访问对于您的 API 至关重要,请运行一两个测试以确保磁盘按照您的需要进行响应。如果您需要能够查询数据库,请进行示例查询,并确保其成功。这部分完全是自定义的,实际上取决于您的 API 及其需要如何执行。
public class HealthController : ApiController
{
    [HttpGet]
    public IHttpActionResult Check()
    {
        // Add logic here to check dependencies
        if (/* successful */)
        {
            return Ok();
        }

        return InternalServerError(); // Or whatever other HTTP status code is appropriate
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 让外部服务向您的端点(当前位于https://whatever.your.domain.is/Health/Check )发出 GET 请求,并在一段时间内未收到 200 OK 时报告。

我过去曾使用过Amazon CloudWatch ,并且对它非常满意。会有其他服务可以为您做这件事,但我没有任何经验。