Kestrel:访问正在监听的IP +端口对

时间:2018-09-05 03:04:44

标签: c# asp.net-core .net-core kestrel-http-server

我需要侦听IP +端口对,以便能够通过NAT实现转发它们。但是,除非有一个请求(即HttpContext变得可访问),否则我没有看到一种访问此信息的简便方法。

我注意到其他人在Determine port in asp.net core上也有同样的问题,但是没有得到答案。

有人有线索打我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

IWebHost接口具有ServerFeatures属性,它是IFeatureCollection的实例。如果要在创建HttpContext之前获取服务器地址和端口,可以通过以下方式检索它们:

public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();

    var serverAddresses = host.ServerFeatures.Get<IServerAddressesFeature>();

    // ... use serverAddresses as you like

    host.Run();
}

请注意,这里的serverAddresses是Address:Port监听的WebHost,而不是IISnginx监听的。