Не удается изменить порт при миграции на. net core 3.1.3 с 2.2.0. - PullRequest
0 голосов
/ 07 апреля 2020

На 2.2.0 у меня есть следующее для создания WebHostBuilder. Затем я вызываю .Build().Run() на нем

        public IWebHostBuilder CreateWebHostBuilder(CommandLineOptions commandLineOptions, Type startupType, IConfiguration configuration, ILogger logger)
        {
            if (builder == null)
            {
                builder = WebHost.CreateDefaultBuilder(commandLineOptions?.Args)
                    .ConfigureAppConfiguration(configBuilder =>
                    {
                        configBuilder.Sources.Clear();
                        configBuilder.AddConfiguration(configuration);
                    })
                    .UseEnvironment(configuration.GetValue<string>("Environment"))
                    .UseStartup(startupType)
                    .UseUrls(configuration.GetValue<string>("HostUrl"))  //"http://*:8000/"
                    .UseSerilog(logger);
            }

            return builder;
        }

После обновления до 3.1.3 все равно работает. Затем я изменил на нижеприведенное на основании миграции do c

        public IHostBuilder CreateHostBuilder(CommandLineOptions commandLineOptions, Type startupType, IConfiguration configuration, ILogger logger)
        {
            if (builder == null)
            {
                builder = Host.CreateDefaultBuilder(commandLineOptions?.Args)
                    .ConfigureAppConfiguration(configBuilder =>
                    {
                        configBuilder.Sources.Clear();
                        configBuilder.AddConfiguration(configuration);
                    })
                    .UseEnvironment(configuration.GetValue<string>("Environment"))
                    .ConfigureWebHostDefaults(webBuilder =>
                    {                        
                        webBuilder.UseStartup(startupType);
                        webBuilder.UseUrls(configuration.GetValue<string>("HostUrl")); //"http://*:8000/"
                    })                                        
                    .UseSerilog(logger);
            }

            return builder;
        }

Однако теперь, независимо от того, что я делаю, он прослушивает порты по умолчанию http://localhost: 5000 и https://localhost: 5001 . У меня нет файла hostsettings. json, launchSettings. json также не имеет ничего установленного, в моих переменных окружения нет настроек. Я запустил из командной строки указание нужного URL, но ничего не работает.

РЕДАКТИРОВАТЬ: Благодаря предложению Мартина Штауфчика минимизировать конфигурацию, я заметил, что изменение ConfigureAppConfiguration на ConfigureHostConfiguration решено проблема. Я также заметил, что если я оставлю это как ConfigureAppConfiguration и уберу строку configBuilder.Sources.Clear();, это тоже сработает.

Я посмотрел разницу между ними, но я все еще не понимаю, что это такое. здесь происходит.

1 Ответ

0 голосов
/ 07 апреля 2020

Я потерял пару часов, работая с .UseUrls сам. Я наконец заработал, заметив, что порядок строк кода важен! То, что работало в моем случае, это звонило UseUrls до UseStartup.

.ConfigureWebHostDefaults(webBuilder =>
{                        
    webBuilder.UseUrls(configuration.GetValue<string>("HostUrl")); //"http://*:8000/"   
    webBuilder.UseStartup(startupType);
})  
...