Iva*_*ono 5 c# autofac serilog asp.net-core
我有使用 Serilog 和 Autofac 的 Asp.Net Core 3 应用程序。我收到以下异常:
DependencyResolutionException:无法使用可用服务和参数调用类型“MyApp.Services.LoginService”上的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数:无法解析参数“Microsoft.Extensions.Logging.ILogger 记录器”构造函数“Void .ctor(Microsoft.Extensions.Logging.ILogger)”。
到目前为止我有以下内容:
在Program.cs
:
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.MinimumLevel.Debug()
.WriteTo.Console(
LogEventLevel.Verbose,
"{NewLine}{Timestamp:HH:mm:ss} [{Level}] ({CorrelationToken}) {Message}{NewLine}{Exception}")
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
在模块中Autofac
:
builder.RegisterType<LoggerFactory>()
.As<ILoggerFactory>()
.SingleInstance();
builder.RegisterGeneric(typeof(Logger<>))
.As(typeof(ILogger<>))
.SingleInstance();
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)
在控制器中:
public class LoginController : ControllerBase
{
private readonly ILogger<LoginController> logger;
private readonly ILoginService loginService;
public LoginController(
ILogger<LoginController> logger,
ILoginService loginService)
{
this.logger = logger;
this.loginService = loginService;
}
}
Run Code Online (Sandbox Code Playgroud)
在服务中(在单独的项目中):
public class LoginService : ILoginService
{
private readonly ILogger logger;
public LoginService(ILogger logger)
{
this.logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
我是不是错过了一步?
归档时间: |
|
查看次数: |
2891 次 |
最近记录: |