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

.net core 使用appsettings.json配置Kestrel侦听端口Dotnet core 2预览2,.net-core,kestrel,.net Core,Kestrel,据我所知,为ASP Dotnet Core 2 preview 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 Ke

据我所知,为ASP Dotnet Core 2 preview 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
},
我曾尝试在Debian机器上设置示例webapp,但当我启动该应用时,它指出该应用正在默认端口5000上列出

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

我尝试在Github上搜索aspnet源代码,我可以找到一个从configuration()读取Kestrel部分的区域,但正如您所看到的,它看起来像一个示例项目


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

我正在使用
Program.cs
hosting.json
文件来配置Kestrel。例如:

var config=new ConfigurationBuilder()
.SetBasePath(目录.GetCurrentDirectory())
.AddJsonFile(“hosting.json”,可选:true,重载更改:true)
.Build();
var host=new WebHostBuilder()
.UseConfiguration(配置)
.UseKestrel()
.UseContentRoot(目录.GetCurrentDirectory())
.UseStartup();
hosting.json

{
    "urls": "http://localhost:4444;http://localhost:4445;"
}
{
    "server.urls": "http://localhost:4444;http://localhost:4445;"
}
以上是最新版本dotnet core的一个示例

对于早期版本:

hosting.json

{
    "urls": "http://localhost:4444;http://localhost:4445;"
}
{
    "server.urls": "http://localhost:4444;http://localhost:4445;"
}

通过appsettings.json对Kestrel配置的支持已在2.0中取消

见问题评论:

kestrel配置文件支持从2.0.0中删除。配置值需要在初始化代码中手动读取

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

公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel((宿主上下文,选项)=>
{ 
if(hostingContext.HostingEnvironment.IsDevelopment){
选项。侦听(IPAddress.Loopback,9001);
options.Listen(IPAddress.Loopback,9002,listenOptions=>{
UseHttps(“certificate.pfx”,“password”);
});
}
})
.Build();

要使用Kestrel运行Visual Studio,只需编辑appsettings.json并添加如下配置(使用NetCore 2.0和2.1测试):

“配置文件”:{
“红隼”:{
“命令名”:“项目”,
“启动浏览器”:正确,
“应用程序URL”:http://localhost:6969/"
}
}

我遇到了同样的问题,appsettings.json中的Kestrel配置没有被拾取。从关于从asp.net core 2.0迁移到2.1的文章中,我更新了引导代码,如下所示,这对我很有用

publicstaticvoidmain(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)
{
返回WebHost.CreateDefaultBuilder(args)
.UseStartup();
}

如对接受答案的评论所述,2.1支持appsettings.json,请参见

A正在工作的appsettings.json:

“红隼”:{
“端点”:{
“Http”:{
“Url”:”http://localhost:5555"
}
}
}
这适用于使用(由“dotnet new webapi”创建)的Program.cs:

WebHost.CreateDefaultBuilder(args)
GitHub中的相关源代码

options.Configure(builderContext.Configuration.GetSection(“Kestrel”);

config.AddJsonFile(“appsettings.json”,可选:true,reloadOnChange:true)

这与我在core 1.1中配置Kestrel的方式类似,我也可以这样做,但我在多个地方读到,未来的方法应该是使用appsettings.json中的Kestrel部分。我看了那个视频,看起来很简单。我一直在尝试使用相同的方法,但我也无法让它工作。其他人对此有什么运气吗?我在asp.net core 2.0中也遇到了这个问题。我放在appsettings.json中的任何内容都不会被使用。我不明白,因为默认情况下,appsettings应该在新的asp.net核心中使用默认的配置生成器读取。@tura08,可以使用appsettings.json,请参见此处:。UseKestrel((hostingContext,options)=>{var env=hostingContext.HostingEnvironment;}比:var env=Environment.GetEnvironmentVariable(“ASPNETCORE_Environment”);当2.1发布时,这将变得多余,因为Kestrel的suuport将通过配置返回,并且开发中的HTTPS将默认打开。