4

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

4

1 回答 1

4

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

  1. 创建一个新的控制器。在本例中,我将其命名为 HealthController
  2. 向控制器添加一个动作,并使用 [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
    }
}
  1. 让外部服务向您的端点(当前位于https://whatever.your.domain.is/Health/Check)发出 GET 请求,并在一段时间内未收到 200 OK 时报告。

我过去使用过Amazon CloudWatch,对此我很满意。将会有其他服务可以为您执行此操作,但我对它们没有任何经验。

于 2020-06-12T20:10:26.470 回答