【发布时间】:2018-09-05 13:14:25
【问题描述】:
我需要侦听 IP+端口对才能通过 NAT 实现转发它们。但是,除非有请求(此时 HttpContext 变得可访问),否则我看不到访问此信息的简单方法。
我注意到有人在 Determine port in asp.net core 上提出了同样的问题,但没有得到答复。
任何人有线索棒可以打我吗?谢谢!
【问题讨论】:
标签: c# asp.net-core .net-core kestrel-http-server
我需要侦听 IP+端口对才能通过 NAT 实现转发它们。但是,除非有请求(此时 HttpContext 变得可访问),否则我看不到访问此信息的简单方法。
我注意到有人在 Determine port in asp.net core 上提出了同样的问题,但没有得到答复。
任何人有线索棒可以打我吗?谢谢!
【问题讨论】:
标签: c# asp.net-core .net-core kestrel-http-server
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 ,而不是 IIS 或 nginx 。
【讨论】: