升级到ASP.NET Core 2.0后,Web API控制台中的重复信息消息

问题描述 投票:8回答:2

我将一个Web API项目从ASP.NET Core 1.x升级到ASP.NET Core 2.0,只需极少的代码更改。

运行Web API时,命令提示符会像平常一样打开。

但是,每条信息都是重复的。

这是一个ASP.NET Core错误还是升级后我的问题?

更新:

我在Startup.cs配置方法中执行以下操作:

    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

当我删除它没有重复。这不再需要了吗?

c# asp.net-web-api asp.net-core
2个回答
11
投票

WebHost.CreateDefaultBuilder为您设置了许多常规内容,为每个单独的ASP.NET Core 2项目保存相同的代码(就像在ASP.NET Core 1.x中一样)。

您可以看到WebHost.CreateDefaultBuilder here的代码。对于您的特定场景,如果您在源代码中看起来有点further down,您将看到以下内容:

logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();

因此,您不再需要自己添加此代码。这样做,它会被添加两次(虽然对我来说似乎不寻常)看起来这样做最终会进行两次记录。

如果你想要更详细地了解这些变化,Andrew Lock有一个很好的write-up如何工作。他还深入研究了如何覆盖其中一些默认值等的一些细节。请注意,这篇文章是基于ASP.NET Core 2预览版1,但从那时起它似乎没有太大变化。


3
投票

我遇到了同样的问题:使用NLog,所有信息都被复制并以这种方式记录。对我来说,解决问题的方法是从loggerFactory.AddNLog()Configure中移除Startup.cs。我正在使用Core 2.0。

© www.soinside.com 2019 - 2024. All rights reserved.