使用appsettings.json配置Kestrel监听端口Dotnet core 2预览2

Nik*_*lum 23 kestrel .net-core

根据我的理解,为ASP Dotnet Core 2预览1/2设置监听端口的正确方法是在appsettings.json中创建一个Kestrel部分,格式如下:

"Kestrel": {
    "EndPoints": { //Could also be Endpoints, it's a bit unclear
        "Http": {
        "Address": "127.0.0.1",
    "Port": 9001 //the port you want Kestrel to run on
},
Run Code Online (Sandbox Code Playgroud)

我试图在Debian机器上设置示例webapp,但是当我启动应用程序时,它写出应用程序在端口5000上列出,默认端口..

我知道appsettings.json被读取,因为当我将日志记录级别更改为Trace时,我在启动时获得更多信息,包括没有找到端点,应用程序将使用标准5000端口.

我试图在Github上搜索aspnet源代码,我可以找到一个从配置中读取Kestrel部分的区域(https://github.com/aspnet/Identity/blob/e38759b8a2de1b7a4a1c19462e40214b43c1cf3b/samples/IdentityOIDCWebApplicationSample/MetaPackage/KestrelServerOptionsSetup .cs),但你可以看到它看起来像一个示例项目.

我缺少什么,这不是在ASP Dotnet核心2中配置Kestrel的标准方法吗?

Kon*_*tin 32

正如对已接受的答案的评论中提到的,2.1支持appsettings.json,请参阅https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap /
#security一个有效的appsettings.json:

"Kestrel": {
  "EndPoints": {
  "Http": {
  "Url": "http://localhost:5555"
 }}}
Run Code Online (Sandbox Code Playgroud)

这是针对Program.cs使用的(由"dotnet new webapi"创建):

WebHost.CreateDefaultBuilder(args)
Run Code Online (Sandbox Code Playgroud)

github中的相关源代码https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L163

options.Configure(builderContext.Configuration.GetSection("Kestrel"));
Run Code Online (Sandbox Code Playgroud)

https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L169

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
Run Code Online (Sandbox Code Playgroud)


mar*_*icz 10

通过appsettings.json支持Kestrel配置已在2.0中删除.

看到这个问题评论:

来自2.0.0的kestrel配置文件支持.需要在初始化代码中手动读取配置值.

要解决这个问题,您可以在program.cs中执行以下操作:

public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup < Startup > ()
 .UseKestrel((hostingContext, options) => 
 { 
  if (hostingContext.HostingEnvironment.IsDevelopment) {
   options.Listen(IPAddress.Loopback, 9001);
   options.Listen(IPAddress.Loopback, 9002, listenOptions => {
    listenOptions.UseHttps("certificate.pfx", "password");
   });
  }

 })
 .Build();
Run Code Online (Sandbox Code Playgroud)

  • 当2.1发布时,这将变得多余,因为通过配置将返回Kestrel的suuport,并且开发中的HTTPS将默认打开https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net -core-2-1-路线图/#安全. (5认同)