在.NET Core Web项目(API,.NET Core 2.2,Kestrel)中,我实现了Microsoft.AspNetCore.Diagnostics.HealthChecks。
运行状况检查支持可通过可定义端口访问的选项。
从那以后,我获得了将新功能限制为“管理端口”(运行状况检查使用的端口)的要求。
所以我的问题是如何实现端口过滤器,仅当特定路径通过定义的端口时才允许调用这些路径? (就像健康检查一样)。
场景: 应用程序在标准端口5000上运行。
红est已定义为监听两个端口
WebHost.CreateDefaultBuilder(args)
// ...
.UseStartup<Startup>()
.ConfigureKestrel((context, options) =>
{
int regularPort = 5000;
int managementPort = 5001;
options.Listen(IPAddress.Any, regularPort);
options.Listen(IPAddress.Any, managementPort);
}
)
;
现在在我使用的启动配置方法中
app.UseHealthChecks("/health/ready", managementPort, ...
这使我只能通过5001访问/ health / ready。
但是,超过5001的其他所有内容都可以访问。反正要禁用它吗?
现在,其他功能(指标)等也应该可以超过5001,但不能超过5000。