删除 Kestrel 绑定警告

问题描述 投票:0回答:6

在 ASP.NET Core 2.1 项目中使用 Kestrel 并在

UseKestrel()
中指定绑定时,会在警告级别记录一条消息:

覆盖地址“http://localhost:50000/”。而是绑定到

UseKestrel()
中定义的端点。

这会向我们的日志添加噪音,报告默认(因此令人困惑)URL,并且不应成为警告。除了由记录器本身过滤消息之外,是否有一种方法可以配置 Web 主机构建器,使其在启动时不记录此消息?

asp.net-core kestrel-http-server asp.net-core-2.1
6个回答
34
投票

这是一个老问题,但您可以使用 "externalUrlConfiguration": true 解决 launchSettings.json

appSettings.json

之间的冲突

appSettings.json 中的 Kestrel 配置

"Kestrel": { "EndpointDefaults": { "Protocols": "Http1AndHttp2" }, "Endpoints": { "HTTPS": { "Url": "https://localhost:4433" } }
这是

launchSettings.json内容:

{ "profiles": { "TestApplication": { "commandName": "Project", "launchBrowser": true, "externalUrlConfiguration": true, //add this line "applicationUrl": "https://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
    

23
投票
首先,如果您认为在应用程序启动时只收到一次,那么“噪音”并不是真正的噪音。因此,除非您正在做一些需要重新启动应用程序的奇怪事情,否则与所有其他(更吵闹的)消息相比,您可能几乎永远不会在日志中看到该行。

话虽如此,这实际上是一个有用的警告,因为它告诉您已经在多个位置配置了绑定 URL。因此,正确的操作不是忽略该消息,而是实际删除重复的配置。

在这种情况下,您将使用带有

UseKestrel()

 的显式监听选项,以便胜过一切。所以你应该删除其他配置。您应该查看以下几个位置:

  • ASPNETCORE_URLS
    环境变量。
  • 旧版
  • ASPNETCORE_SERVER.URLS
    环境变量。
  • Properties/launchSettings.json
    .

22
投票
有同样有点烦人的警告,并检查了环境变量和配置文件,但无法找到 url 列表的来源。最后我使用

IWebHostBuilder.UseUrls()

 和一个空的网址列表来消除警告。

IWebHostBuilder builder = new WebHostBuilder() .UseUrls() .UseKestrel() .ConfigureKestrel(...
编辑:对于.net6

var builder = WebApplication.CreateBuilder(args); builder.WebHost.UseUrls();
    

11
投票
也可能是

launchsettings.jsonappsetings.json中包含的配置之间存在冲突

就我而言,在本地开发时,

appsetings.json中的 Kestrel 条目:

"kestrel": { "endpoints": { "http": { "url": "http://localhost:5000" }, "https": { "url": "https://localhost:5001" } }

launchsettings.json中的配置文件冲突:

"MyProject-Dev": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "http://localhost:5000;https://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }

我相信正确的位置是在

launchsettings.json 文件中,因此删除 appsettings.json 中的 kestrel 条目解决了我的问题。


0
投票
之前的答案都不适合我。我在 builder.WebHost.UseKestrel(async options => )

中定义了我的网址

我从 appsettings.json 中删除了以下内容,然后警告消失了。

"AllowedHosts": "*"
    

0
投票
如果可以帮助某人,我正在为 .NET 6 中的 webapi 寻找一些东西 对我来说解决的是在 launch.json 中使用下面的代码

"env": { "ASPNETCORE_URLS": "http://localhost:5050" }
    
© www.soinside.com 2019 - 2024. All rights reserved.