为啥 web api 中没有 Ilogger 的 DI?

Posted

技术标签:

【中文标题】为啥 web api 中没有 Ilogger 的 DI?【英文标题】:Why there is no DI for Ilogger in web api?为什么 web api 中没有 Ilogger 的 DI? 【发布时间】:2022-01-11 23:58:07 【问题描述】:

我想知道(想知道)为什么我们可以在 controller 中使用 ILogger 而无需在 ConfigureService 中为其添加 依赖注入 (DI)?

    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
        
        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger,

希望我的问题很清楚。

【问题讨论】:

因为 ASP.NET Core 会自动为你添加。 有一个AddLogging 扩展方法用内置的配置系统配置日志系统(并注册ILogger&lt;T&gt;)。在某些配置下,该方法由框架自动调用。 【参考方案1】:

请在启动文件中添加以下内容:

private void CreateServiceProvider()

    services.AddLogging();//<--HERE

【讨论】:

以上是关于为啥 web api 中没有 Ilogger 的 DI?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的数据没有在 Flutter for web 中使用 api 从实时数据库中检索

为啥我没有在经过 Windows 身份验证的 Web Core API 中获得我的用户名?

为啥 ASP.NET web api 3 项目在 ASP.NET web api 2 执行时没有请求就无法启动?

如何在没有 DI 的类库中使用 ILogger<Class>

C# 使用ILogger接口编写日志

Spotify Web API - 为啥新创建的播放列表没有填充所选歌曲?