【问题标题】:Health check, ASP.NET Web API健康检查、ASP.NET Web API
【发布时间】:2020-06-12 19:44:20
【问题描述】:

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

【问题讨论】:

  • 可能会创建一个虚拟的可达端点,该端点还测试依赖的外部资源(如数据库连接)。然后创建一些外部事件(重复和/或手动触发)来测试这个端点并报告结果。
  • app.metrics 有健康检查。

标签: c# .net asp.net-web-api asp.net-web-api2 health-check


【解决方案1】:

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

  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,对此我很满意。将会有其他服务可以为您执行此操作,但我对它们没有任何经验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2017-06-09
    • 2014-10-02
    • 2021-09-13
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多