ASP.NET Core 3 启动控制器时记录错误

杰瑞·埃施

我正在尝试使用日志记录在 ASP.NET Core 3 中运行 API 服务,但是在尝试从依赖项服务检索 ILogger 时,我不断收到错误消息。我想我已经遵循了我能找到的例子,但我不断得到:

“System.InvalidOperationException:'在尝试激活'GMT.Beacon.Service.Startup'时无法解析类型'Microsoft.Extensions.Logging.ILogger`1[GMT.Beacon.Service.Startup]'的服务。'”

我使用默认模板来启动项目,因此它通过默认构建器设置网络主机,根据文档应该自动配置日志记录。此外,我尝试手动添加提供程序,但出现相同的错误。我觉得我错过了一些明显的东西,但无法弄清楚是什么。

这是出错的 Program.cs 类:

public class Program { 
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => {
                webBuilder.UseStartup<Startup>();
            });

    public static void Main(string[] args) {
        var host = CreateHostBuilder(args).Build();
        var logger = host.Services.GetRequiredService<ILogger<Program>>();
        logger.LogInformation("Test log entry.");
        host.Run();
    }
}

在 Startup.cs 类中,这是构造函数:

public Startup(IConfiguration config, IHostEnvironment hosting, ILogger<Startup> logger) {
    _hosting = hosting;
    _config = config;
    _logger = logger;

    _logger.LogInformation($"{DateTime.UtcNow:R} - Starting (Environment={_hosting.EnvironmentName}; " + $"InformationalVersion={Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion};");
}

根据我可以找到的文档,这似乎应该可以工作,但它会在线抛出上述错误:

var host = CreateHostBuilder(args).Build();

我也尝试过手动配置日志记录(使用下面的代码),但返回相同的错误。

Host.CreateDefaultBuilder(args)
    .ConfigureLogging((hostingContext, logging) => {
        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
        logging.AddEventSourceLogger();
        logging.AddConsole();
        logging.AddDebug();
    })
    .ConfigureWebHostDefaults(webBuilder => {
        webBuilder.UseStartup<Startup>();
    });

有没有人发现这个设置有问题,或者知道如何在 ASP.NET Core 3 中正确配置日志子系统?

柯克·拉金

这在 ASP.NET Core 3 中发生了变化。请参阅此处的公告

TLDR:唯一类型的启动构造器注入的通用主机支持的IHostEnvironmentIWebHostEnvironmentIConfiguration使用 WebHost 的应用程序不受影响。

ILogger<T>可注入Configure,因此您可以从那里访问它以记录您的启动消息:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
    logger.LogInformation(...);

    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改ASP Net Core 3 API默认启动控制器(/启动URL)

来自分类Dev

ASP.Net Core 3将JSON数组发布到控制器

来自分类Dev

查看在Asp.Net Core 3中的控制器中找不到动作

来自分类Dev

在ASP.NET Core中发现通用控制器

来自分类Dev

控制器动作如何调用Asp .Net Core?

来自分类Dev

NLog不登录ASP.NET Core控制器

来自分类Dev

控制器属性ASP.NET Core

来自分类Dev

Asp.net core 2.1 - 布局控制器

来自分类Dev

如何从控制器将所有用户列表发送到asp.net Core 3中的视图

来自分类Dev

asp.net mvc core 2 脚手架生成控制器中的错误

来自分类Dev

ASP NET Core 3-忘记密码500错误

来自分类Dev

尝试将RoleManager注入ASP.NET Core 2.2控制器时出错

来自分类Dev

在ASP.NET Core中测试控制器时处理声明

来自分类Dev

当发布到ASP.NET Core中的控制器时,所有值均为null

来自分类Dev

共享ASP.NET Core 3.1启动和控制器中使用的配置对象的最佳方法是什么

来自分类Dev

ASP.NET MVC 3控制器或View Engine

来自分类Dev

.ASP.NET Core仅在控制器上存在策略时才运行策略处理程序

来自分类Dev

在ASP.Net Core中使用AJAX / JQuery向我的控制器发送参数时出现问题

来自分类Dev

Asp Net core 3的配置是否与Asp Net core 3无关?

来自分类Dev

.NET Standard和.NET Core 3.x或ASP.NET Core 3.x

来自分类Dev

共享cookie .net Core 3和Asp.net

来自分类Dev

从asp net 5迁移到asp net core时出错

来自分类Dev

如何在3.x中取回ASP.NET Core详细请求记录

来自分类Dev

ASP.Net Core从另一个控制器调用一个控制器

来自分类Dev

如何在ASP.NET Core Web API中将新控制器设置为默认控制器

来自分类Dev

ASP.NET Core 3和500.30进程内启动失败

来自分类Dev

Asp.net Core 2.1记录

来自分类Dev

我如何从ASP.NET Core中的控制器以外的其他类登录?

来自分类Dev

在ASP.Net Core MVC控制器中访问提交按钮的数据属性?

Related 相关文章

  1. 1

    如何更改ASP Net Core 3 API默认启动控制器(/启动URL)

  2. 2

    ASP.Net Core 3将JSON数组发布到控制器

  3. 3

    查看在Asp.Net Core 3中的控制器中找不到动作

  4. 4

    在ASP.NET Core中发现通用控制器

  5. 5

    控制器动作如何调用Asp .Net Core?

  6. 6

    NLog不登录ASP.NET Core控制器

  7. 7

    控制器属性ASP.NET Core

  8. 8

    Asp.net core 2.1 - 布局控制器

  9. 9

    如何从控制器将所有用户列表发送到asp.net Core 3中的视图

  10. 10

    asp.net mvc core 2 脚手架生成控制器中的错误

  11. 11

    ASP NET Core 3-忘记密码500错误

  12. 12

    尝试将RoleManager注入ASP.NET Core 2.2控制器时出错

  13. 13

    在ASP.NET Core中测试控制器时处理声明

  14. 14

    当发布到ASP.NET Core中的控制器时,所有值均为null

  15. 15

    共享ASP.NET Core 3.1启动和控制器中使用的配置对象的最佳方法是什么

  16. 16

    ASP.NET MVC 3控制器或View Engine

  17. 17

    .ASP.NET Core仅在控制器上存在策略时才运行策略处理程序

  18. 18

    在ASP.Net Core中使用AJAX / JQuery向我的控制器发送参数时出现问题

  19. 19

    Asp Net core 3的配置是否与Asp Net core 3无关?

  20. 20

    .NET Standard和.NET Core 3.x或ASP.NET Core 3.x

  21. 21

    共享cookie .net Core 3和Asp.net

  22. 22

    从asp net 5迁移到asp net core时出错

  23. 23

    如何在3.x中取回ASP.NET Core详细请求记录

  24. 24

    ASP.Net Core从另一个控制器调用一个控制器

  25. 25

    如何在ASP.NET Core Web API中将新控制器设置为默认控制器

  26. 26

    ASP.NET Core 3和500.30进程内启动失败

  27. 27

    Asp.net Core 2.1记录

  28. 28

    我如何从ASP.NET Core中的控制器以外的其他类登录?

  29. 29

    在ASP.Net Core MVC控制器中访问提交按钮的数据属性?

热门标签

归档