Usehealthchecks 与 Maphealthchecks

Zac*_*ins 9 c# asp.net-core health-check

我到处查看,但我假设这是一种较旧的做事方式,但是将运行状况检查端点添加到中间件是否有更深层的区别?

In Startup.Configure()..

app.UseEndpoints(endpoints =>
{
    endpoints.MapHealthChecks("/health");
});
Run Code Online (Sandbox Code Playgroud)
app.UseHealthChecks("/health")
Run Code Online (Sandbox Code Playgroud)

hex*_*tor 17

UseHealthChecks并且MapHealthChecks有细微的区别,UseHealthChecks允许您在使用 null 或空 PathString 时捕获端口上的任何端点,MapHealthChecks不允许这样做,使用 null 会引发异常,而空字符串只是相当于/.

HealthCheckMiddleware他们都在幕后使用相同的中间件。是MapHealthChecks的扩展方法IEndpointRouteBuilder,而UseHealthChecks是 的扩展方法IApplicationBuilder

这里附上源码供参考。

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

如果你查看源代码,你会发现UseHealthChecks使用了MapWhen()哪里MapHealthChecks使用Map()