Usehealthchecks 与 Maphealthchecks

Usehealthchecks vs Maphealthchecks

我环顾四周,但我假设这是一种较旧的做事方式,但是向中间件添加健康检查端点是否有更深层次的区别?

In Startup.Configure()..

app.UseEndpoints(endpoints =>
{
    endpoints.MapHealthChecks("/health");
});

app.UseHealthChecks("/health")

UseHealthChecksMapHealthChecks 有细微差别,UseHealthChecks 允许您在使用 null 或空 PathString 时捕获端口上的任何端点,MapHealthChecks 不允许这样做,使用 null 会抛出异常,空字符串就相当于 /.

他们都在幕后使用相同的中间件HealthCheckMiddlewareMapHealthChecksIEndpointRouteBuilder 上的扩展方法,而 UseHealthChecksIApplicationBuilder.

上的扩展方法

此处引用出处,供参考

https://github.com/dotnet/aspnetcore/tree/main/src/Middleware/HealthChecks/src/Builder

如果您查看源代码,您会发现 UseHealthChecks 使用 MapWhen(),而 MapHealthChecks 使用 Map()