How to determine which port ASP.NET Core 2 is listening on when a dynamic port (0) was specified

前端 未结 5 1148
遇见更好的自我
遇见更好的自我 2020-12-17 20:28

I\'ve got an ASP.NET Core 2.0 app which I intend to run as a stand-alone application. The app should start up and bind to an available port. To achieve this I configure the

5条回答
  •  庸人自扰
    2020-12-17 21:14

    I'm able to do it using reflection (ugh!). I've registered an IHostedService and injected IServer. The ListenOptions property on KestrelServerOptions is internal, therefore I need to get to it using reflection. When the hosted service is called I then extract the port using the following code:

    var options = ((KestrelServer)server).Options;
    var propertyInfo = options.GetType().GetProperty("ListenOptions", BindingFlags.Instance | BindingFlags.NonPublic);
    var listenOptions = (List)propertyInfo.GetValue(options);
    var ipEndPoint = listenOptions.First().IPEndPoint;
    var port = ipEndPoint.Port;
    

提交回复
热议问题