ASP.NET core 2.0 standalone: передача URL-адреса прослушивания через командную строку
Я пишу свою первую книгу. ASP.NET Core 2.0 web REST API приложение, следуя этот учебник. Однако мой конкретный вопрос касается кода, который вы получаете в программе.cs-файл при создании стандарта ASP.NET ядро веб-приложения в VS2017, это тот же код, описанный здесь:
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace WebApplication5
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
У меня есть мое приложение, работающее нормально, когда я отлаживаю в VS2017, поэтому следующим шагом, который я сделал, было сделать его автономным приложением в соответствии с этим учебником, который отлично работает и дает мне исполняемый файл, который я могу запустить (я на windows 10 x64).
Проблема теперь в том, что этот исполняемый файл запускает веб-сервер на порту 5000, но я хотел бы иметь возможность настроить прослушивающие URL-адреса с помощью параметра командной строки.
Взглянув на приведенный выше код, мы видим, что args
передается в WebHost.CreateDefaultBuilder(args)
, поэтому я предполагаю, что любые аргументы командной строки интерпретируются этой функцией, однако я не могу понять, что я должен передать в командной строке, чтобы заставить сервер слушать другой порт.
Я попробовал следующие варианты:
- MyApp.exe --UseUrls="http://*:5001"
- MyApp.exe --UseUrls=http://*:5001
- MyApp.exe --server.urls=http://*:5001
- MyApp.exe urls="http://*:5001"
И различные другие подобные комбинации... Приложение запускается, но продолжает слушать только на порту 5000.
Я начинаю думать, что пытаюсь сделать что-то невозможное :) так это действительно невозможно или я что-то упускаю?
1 ответ:
В linux я использую:
./MYAPP urls=http://*:8081 &
, но для этого вам нужно изменить свой код. Попробуйте изменить код соответствующим образом:public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) { var configuration = new ConfigurationBuilder().AddCommandLine(args).Build(); return WebHost.CreateDefaultBuilder(args) .UseConfiguration(configuration) .UseStartup<Startup>() .Build(); }