Как я могу изменить порт прослушивания Kestrel (AspNetCore) по переменным среды в netcore3.1

У меня есть проект aspnetcore3.1, и я хочу установить пользовательский порт для Kestrel (отличный от 5000 по умолчанию). Я могу сделать это в Program.cs , добавив

Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.ConfigureKestrel(options =>
    {
        options.ListenLocalhost(80);
    });
    webBuilder.UseStartup<Startup>();
})

Но это не может быть применено к моему случаю, поэтому интересно, как это можно сделать с помощью переменной среды?

Всего 1 ответ


Есть несколько способов добиться этого, как описано здесь .

1) Переменная среды ASPNETCORE_URLS.
2) Аргумент командной строки --urls.
3) URL-адрес ключа конфигурации хоста.
4) Метод расширения UseUrls.

Чтобы добиться этого с помощью переменной среды, просто создайте переменную среды с именем ASPNETCORE_URLS и задайте в качестве значения URL-адрес, который вы хотите использовать

Обычно это будет http://+:<port> или https://+:<port>

Другой метод, который не описан выше, - через файл hostsettings.json.

Вы можете настроить URL и порт, создав файл конфигурации hostsettings.json и добавив ключ urls, затем добавьте hostsettings.json в ваш IConfigurationBuilder при сборке WebHostBuilder .

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/web-host?view=aspnetcore-3.1#override-configuration

Вот фрагмент кода по ссылке, на случай, если эта ссылка когда-нибудь пропадет.

Создайте файл hostsettings.json, содержащий ключ urls с вашими значениями

{
    urls: "http://*:5005"
}

Зарегистрируйте hostsettings.json в вашем IConfigurationBuilder

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

    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false)
            .AddJsonFile("hostsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseUrls("http://*:5000")
            .UseConfiguration(config)
            .UseStartup<Startup>();
    }
}

Есть идеи?

10000