/ / Неможливо встановити порт для програми Net.Core у launchSettings.JSON - json, asp.net-core

Неможливо встановити порт для програми Net.Core у launchSettings.JSON - json, asp.net-core

Я редагував launchSettings.JSON файл і змінив порт так.

"Gdb.Blopp": {
"commandName": "Project",
"launchBrowser": false,
"launchUrl": "http://localhost:4000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}

Однак він все ще починається на порту 5000. Чи не враховує це налаштування все, чи є у мене відсутній щось інше?

Відповіді:

4 для відповіді № 1

The launchSettings.json є лише Visual Studio, коли ви натискаєте F5 / Ctr + F5 і пропонує параметри у випадаючому меню поряд із кнопкою «Пуск».

введіть опис зображення тут

Також ви не повинні безпосередньо редагувати цю launcherSettings.json файл, а замість цього використовуйте властивість проекту, щоб змінити речі.

Одна з причин цього полягає в тому, що якщо ви зміните його за допомогою властивостей проекту, Visual Studio також буде редагувати файли IIS Express (розташовані в .vs/config/applicationhost.config папка вашого рішення).

Якщо ви хочете змінити спосіб використання порт kestrel, скористайтеся .UseUrls("http://0.0.0.0:4000") (отримай це або з appsettings.json або hosting.jsonв) Program.cs.

Якщо ви не хочете використовувати жорстко закодовані, ви також можете зробити щось подібне

Створити hosting.json:

{
"server": "Microsoft.AspNetCore.Server.Kestrel",
"server.urls": "http://localhost:4000"
}

Програма.cs

public class Program
{
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.AddJsonFile("hosting.json", optional: false)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.Build();

var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();

host.Run();
}
}

Ви також можете це зробити за допомогою командного рядка (AddCommandLine дзвінок важливий тут, з Microsoft.Extensions.Configuration.CommandLine" пакет)

var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();

var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();

host.Run();

Потім запустіть його через dotnet run server.urls=http://0.0.0.0:4000.

Коли ви запускаєте IIS / IISExpress, порт kestrel буде визначатися за допомогою UseIISIntegration().


0 для відповіді № 2

Оскільки .NET Core 2.0 вам не потрібно підтримувати hosting.json або модифікувати запуск додатка більше. Існує вбудована підтримка для налаштування прикладного порту, пояснюється тут: https://stackoverflow.com/a/49000939/606007