如何将路由绑定到asp.net-core / Kestrel中的特定端口

Jel*_*rik 7 kestrel-http-server asp.net-core

在asp.net Web API中,可以将具有特定端口的路由映射到控制器,如下所示:

public void Run1()
{
    HttpConfiguration config = new HttpConfiguration();
    ...
    config.Routes.MapHttpRoute(
       name: "Controller1",
       routeTemplate: "{action}",
       defaults: new { controller = "Controller1" }
    );

    Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9000/base1/", config);
}

public void Run2()
{
    HttpConfiguration config = new HttpConfiguration();
    ...
    config.Routes.MapHttpRoute(
       name: "Controller2",
       routeTemplate: "{action}",
       defaults: new { controller = "Controller3" }
    );

    Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9000/base2/", config);
}

public void Run3()
{
    HttpConfiguration config = new HttpConfiguration();
    ...
    config.Routes.MapHttpRoute(
       name: "Controller3",
       routeTemplate: "{action}",
       defaults: new { controller = "Controller3" }
    );

    Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9050/base3/", config);
}

Run1();
Run2();
Run3();
Run Code Online (Sandbox Code Playgroud)

这给出了三种不同的路线:

http://localhost:9000/base1/SomeAction -> SomeAction on Controller1
http://localhost:9000/base2/SomeAction -> SomeAction on Controller2
http://localhost:9050/base3/SomeAction -> SomeAction on Controller3
Run Code Online (Sandbox Code Playgroud)

如何在Asp.net Core中使用Kestrel完成此操作?

我知道,我可以指定隼监听与端口IWebHostBuilder.UseUrls并与基本路径IApplicationBuilder.UsePathBase。但是,如何将路由映射到特定端口?

另外:似乎Kestrel(与Katana相反)不能在同一端口上多次运行(请参阅Run1和Run2)。有人可以确认吗?