我试图创建一个托管的ASP.net Blazor应用程序,并试图将记录器添加到我的控制器中。
我有这个:
public MyController(ILogger logger) {
_logger = logger;
// more initialization
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到:
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'MyApp.Server.Controllers.MyController'.
Run Code Online (Sandbox Code Playgroud)
由于有许多日志消息在滚动,因此我想Blazor已经初始化了一个记录器。
我该如何访问?
非泛型ILogger未在服务集合中注册。相反,您应该注入Generic ILogger<T>。通用类型参数T用于设置与记录器实例链接的类别名称。它使您可以轻松查看日志呼叫的来源。
通常,您将使用记录器的类型指定为通用类型参数。因此,在您的情况下,您将使用ILogger<MyController>:
public MyController(ILogger<MyController> logger)
{
_logger = logger;
}
Run Code Online (Sandbox Code Playgroud)
请注意,服务器端Blazor对此行为没有特殊要求。这是标准的ASP.NET Core,并且该控制器也是普通的ASP.NET Core控制器。
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |