将Kestrel中的路径限制为.NET Core中的特定端口(端口筛选)

时间:2019-01-31 14:59:28

标签: .net-core kestrel-http-server asp.net-core-2.2

在.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。

0 个答案:

没有答案