Указание порта Kestrel в командной строке arg для. NET Core 3.1 - PullRequest
1 голос
/ 06 февраля 2020

Вот моя Program.CS

public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseSerilog()
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(serverOptions =>
                {
                    // Set properties and call methods on options
                })
                .UseKestrel()
                .UseIISIntegration()
                .UseStartup<Startup>();
            })
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddJsonFile("appsettings.local.json", optional: true, reloadOnChange: true);
                config.AddCommandLine(args);
            });
    }

Я запускаю приложение с помощью следующей команды:

dotnet run --server.urls http://localhost:59708

Однако приложение будет прослушивать только порт 59707, а не порт 59708 Я пытаюсь установить порт с аргументами командной строки, чтобы я мог запускать несколько экземпляров приложения на отдельных серверах c портов

1 Ответ

0 голосов
/ 15 февраля 2020

Вызов .UseKestrel() примерно так:

.UseKestrel((ctx, opt) =>
{
    var ipAddress = IPAddress.Parse("127.0.0.1")
    var port = 80;
    opt.Listen(ipAddress, port);
    // for HTTPS
    //opt.Listen(ipAddress, httpsPort, listenOptions =>
    //{
    //    listenOptions.UseHttps("certificate.pfx", "password");
    //});
}

Вы можете легко понять, как анализировать аргументы командной строки . Варианты почти бесконечны ...

HTH

...