Как указать порт an ASP.NET основное приложение размещается на?
при использовании WebHostBuilder
на Main
точка входа, как я могу указать порт, к которому он привязывается?
по умолчанию он использует 5000.
обратите внимание, что этот вопрос специфичен для нового ASP.NET Core API (в настоящее время в 1.0.0-RC2).
5 ответов:
можно использовать
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 --server.urls=http://localhost:5001/
последующий ответ, чтобы помочь кому-либо сделать это с помощью интеграции VS docker. Мне нужно было перейти на порт 8080 для запуска с использованием "гибкой" среды в google appengine.
вам понадобится следующее В вашем Dockerfile:
ENV ASPNETCORE_URLS=http://+:8080 EXPOSE 8080
и вам нужно будет изменить порт в docker-compose.yml также:
ports: - "8080"
альтернативным решением является использование
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(); }
вы можете указать URL-адрес хостинга без каких-либо изменений в вашем приложении.
создать
Properties/launchSettings.json
файл в каталоге вашего проекта и заполнить его чем-то вроде этого:{ "profiles": { "MyApp1-Dev": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:5001/" } } }
ты
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
при размещении в контейнерах docker (версия linux для меня) вы можете получить сообщение "отказано в подключении". В этом случае вы можете использовать IP-адрес 0.0.0.0 что означает "все IP-адреса на этой машине" вместо 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(); } }