Kestrel配置使用特定端口+ URL

时间:2018-02-13 11:06:55

标签: c# asp.net-core-2.0 kestrel-http-server

我在Win 7上使用Asp.Net核心2.0.2和VS2017(15.3.5)。

我目前的Kestrel配置如下所示:

return WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureAppConfiguration((hostContext, config) =>
    {
        var envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

        config.Sources.Clear();
        config.AddJsonFile("appsettings.json", optional : false);
        config.AddJsonFile($"appsettings.{envName}.json", optional : false);
        config.AddEnvironmentVariables();
    })
    .UseKestrel(options =>
    {
        options.Listen(IPAddress.Loopback, 5859);
    })
    .UseContentRoot(pathToContentRoot)
    .Build();

这显然是在监听http://localhost:5859。我想配置Kestrel,以便它只能侦听自定义URL,例如http://localhost:5859/MyNewApp。我该怎么做?

(使用Core 1.0,我使用UseUrls("http://localhost:5859/MyNewApp")部分完成了工作。它会在http://localhost:5859以及http://localhost:5859/MyNewApp上进行监听。在Core 2.0.2中执行相同操作会导致例外:

  

System.InvalidOperationException:只能使用IApplicationBuilder.UsePathBase()配置路径库。

1 个答案:

答案 0 :(得分:1)

使用2.0时,您需要利用UsePathBaseUseUrlsremoved from Kestrel。您希望在启动时使用Configure方法执行此操作:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UsePathBase("/MyNewApp"); 
}