Как указать порт, на котором размещено приложение ASP.NET Core?
При использовании WebHostBuilder
в начальной точке Main
, как я могу указать порт, к которому он привязан?
По умолчанию используется 5000.
Обратите внимание, что этот вопрос специфичен для нового API-интерфейса ASP.NET Core (в настоящее время в 1.0.0-RC2).
Ответы
Ответ 1
Вы можете использовать UseUrls
для этого:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://localhost:5001/")
.Build();
host.Run();
}
}
Кроме того, вы можете настроить адрес сервера с помощью стека конфигурации. Вот как вы можете использовать аргументы командной строки для передачи нужного адреса:
public class Program
{
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseConfiguration(configuration)
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
dotnet run --urls=http://localhost:5001/
Ответ 2
Последующий ответ, чтобы помочь кому-либо сделать это с интеграцией докеров на VS. Мне нужно было перейти на порт 8080 для запуска с использованием "гибкой" среды в Google appengine.
В вашем файле Docker вам понадобится следующее:
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
и вам нужно будет изменить порт в файле docker-compose.yml:
ports:
- "8080"
Ответ 3
Вы можете вставить раздел Kestrel в ядро asp.net 2. Файл 1+ appsettings.json.
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
},
Ответ 4
Альтернативным решением является использование hosting.json
в корне проекта.
{
"urls": "http://localhost:60000"
}
И затем в Program.cs
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", true)
.Build();
var host = new WebHostBuilder()
.UseKestrel(options => options.AddServerHeader = false)
.UseConfiguration(config)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Ответ 5
Вы можете указать URL хостинга без каких-либо изменений в вашем приложении.
Создайте файл Properties/launchSettings.json
в каталоге вашего проекта и заполните его примерно так:
{
"profiles": {
"MyApp1-Dev": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
}
dotnet run
должна выбрать ваш файл launchSettings.json
и отобразить его в консоли:
C:\ProjectPath [master ≡]
λ dotnet run
Using launch settings from C:\ProjectPath\Properties\launchSettings.json...
Hosting environment: Development
Content root path: C:\ProjectPath
Now listening on: http://localhost:5001
Application started. Press Ctrl+C to shut down.
Более подробная информация: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Ответ 6
При размещении в контейнерах докеров (версия для Linux для меня) вы можете получить сообщение "Отказано в соединении". В этом случае вы можете использовать IP-адрес 0.0.0.0, что означает "все IP-адреса на этом компьютере" вместо loopback localhost, чтобы исправить переадресацию порта.
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000/")
.Build();
host.Run();
}
}
Ответ 7
Выше .net core 2.2 метод Main support спорит с WebHost.CreateDefaultBuilder(args)
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Вы можете построить свой проект и перейти к команде bin
run следующим образом:
dotnet <yours>.dll --urls=http://localhost:5001
или с несколькими URL-адресами
dotnet <yours>.dll --urls="http://localhost:5001,https://localhost:5002"
Ответ 8
Перейдите в properties/launchSettings.json и найдите ваше имя приложения, а затем найдите applicationUrl. вы увидите, что он работает localhost: 5000, измените его на все, что вы хотите. а затем запустить дотнет запустить...... ура
Ответ 9
Кроме того, вы можете указать порт, запустив приложение из командной строки.
Просто запустите команду:
dotnet run --server.urls http://localhost:5001
Примечание. Где 5001 - это порт, на котором вы хотите работать.