Net core Web应用程序中不同端口的健康检查

use*_*455 2 c# asp.net-core asp.net-core-webapi

我有一个带有 API 的标准 Net core Web 应用程序。我正在尝试实施健康检查,但希望它在不同的端口上运行。

在配置中:

app.UseHealthChecks("/health", 8000);
Run Code Online (Sandbox Code Playgroud)

在配置服务中

services.AddHealthChecks()
Run Code Online (Sandbox Code Playgroud)

默认情况下,可通过以下方式访问 api: https://localhost:44322/api/values

然后我希望可以通过以下方式访问健康检查:https://localhost:8000/health

如果我移除端口,健康状况会很好。我是否需要一些其他配置来将应用程序设置为在不同端口上运行?

jpg*_*ssi 7

根据要求,我正在创建一个答案,以便未来的读者可以从中受益。

最初的问题是因为您没有8000在应用程序中注册健康检查端口。有两种方法可以做到这一点。

  1. 通过设置环境变量配置提供程序launchSettings.json拾取的端口

  2. 或者正如我在评论中建议的那样,直接调用UseUrlsProgram.cs指定 HealthCheck 端口以及您的应用程序的端口。像这样的东西:

return new WebHostBuilder()
    .UseConfiguration(config)
    .UseUrls("http://localhost:5000/;http://localhost:8000")
    .UseKestrel()
    .UseStartup(startupType)
    .Build();
Run Code Online (Sandbox Code Playgroud)

你的普通应用程序端口在哪里50008000健康检查端口在哪里。

然后Configure在里面Startup.cs直接使用端口:

app.UseHealthChecks("/health", port: 8000);
Run Code Online (Sandbox Code Playgroud)

您可以在官方文档中找到所有这些内容和更多内容:ASP.NET Core 中的运行状况检查 - 按端口过滤