如何在使用ASP.NET Core中间件运行状况检查创建的运行状况检查终结点上有选择地强制实施HTTPS?

时间:2020-08-28 21:00:06

标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-3.1

我已经configured health checks在MVC应用程序中使用了中间件,但是出于安全原因,已被要求在运行状况端点上enforce https。由于不同的原因,我无法在整个服务中强制实施它,因此我想知道是否存在一种机制可以仅对运行状况终结点选择性地执行此操作。虽然可以使用控制器来完成此操作,但是对于中间件创建的端点,我似乎无法实现。

有没有内置的方法来实现这一目标?我可以创建某种定制的中间件作为包装来实现它吗?

我已经研究了EndpointBuilders,约定,RequireHttps等,但是找不到任何东西。

1 个答案:

答案 0 :(得分:1)

可以通过在Startup#Configure中为https指定端口号来解决

app.UseEndpoints(endpoints =>
{
  // ... other end-points here

  endpoints.MapHealthChecks("/readiness").RequireHost("*:5001", "*:443");
});

在我的计算机上使用Kestrel在默认情况下使用端口5000(用于HTTP)和5001(用于HTTPS)进行了测试和验证。如果您的生产环境不使用端口443,则可以删除, "*:443"