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();
    }