ASP.NET核心2.0独立:通过命令行传递监听URL

Ale*_*lex 6 c# kestrel-http-server asp.net-core

我按照本教程编写了我的第一个ASP.NET Core 2.0 Web REST API应用程序.但是我的具体问题是关于在VS2017中创建标准ASP.NET核心Web应用程序时在Program.cs文件中获得的代码,它与此处描述的代码相同:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有我的应用程序工作正常,当我在VS2017调试,所以接下来我做的步骤是按使它成为一个独立的应用程序本教程,它工作正常,并给了我一个可执行文件,我可以运行(我是在Windows 10 64) .

现在的问题是这个可执行文件在端口5000上启动了web服务器,但是我希望能够通过命令行参数配置监听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上进行监听.

我开始认为我正在尝试一些不可能的事情:)所以它真的不可能或者我错过了什么吗?

And*_*dré 8

在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();
    }
Run Code Online (Sandbox Code Playgroud)