как программно определить, на каком порту работает ядро ​​asp.net - PullRequest
0 голосов
/ 16 октября 2019

Ядро ASP.net может работать на произвольном количестве портов, иногда приложение может запускаться через командную строку, получая переданный порт в качестве параметра, иногда в докере оно работает на 80, если указан профиль Released, как мы можемопределить программно, какой порт на самом деле работает asp.net?

Предлагаемый ответ не является ответом, потому что для этого требуется доступ к контексту, и, скажем, на Startup Мне нужно получить доступ к этому значению?

launchSettings.json

"Customer": {
  "commandName": "Project",
  "launchBrowser": false,
  "applicationUrl": "https://localhost:5007;http://localhost:5006",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development",
  }

, например, в следующем коде

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Service>();

или в любом месте во время процесса запуска системы.

1 Ответ

1 голос
/ 17 октября 2019

Вы можете попробовать получить порт из ServerAddressesFeature:

public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
{
    var serverAddressesFeature = app.ServerFeatures.Get<IServerAddressesFeature>();
    var address = serverAddressesFeature.Addresses.First();
    int port = int.Parse(address.Split(':').Last());


    logger.LogInformation("Listening on the following addresses: " + string.Join(", ", port.ToString()));
}

As https://github.com/aspnet/Hosting/issues/811:

Это не будет работать для IIS или IIS Express. IIS работает как обратный прокси. Он выбирает случайный порт для прослушивания вашего процесса и не передает вам информацию об общедоступных адресах. Единственный способ получить информацию об общедоступных адресах - это поступающие запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...