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

Kestrel: get access to IP+port pair(s) it's listening on

我需要侦听 IP + 端口对才能通过 NAT 实现转发它们。但是,除非有请求(当 HttpContext 变得可访问时),我没有看到访问此信息的简单方法。

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

谁有线索棒可以打我?谢谢!

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 是 WebHost 监听的 Address:Port,而不是 IISnginx 监听的