I have Asp.Net Core 3 app using Serilog and Autofac. I'm getting the following exception:
DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'MyApp.Services.LoginService' can be invoked with the available services and parameters: Cannot resolve parameter 'Microsoft.Extensions.Logging.ILogger logger' of constructor 'Void .ctor(Microsoft.Extensions.Logging.ILogger)'.
So far I have the following:
In 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();
In an Autofac module:
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();
In a controller:
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;
}
}
And in a service (in a separate project):
public class LoginService : ILoginService
{
private readonly ILogger logger;
public LoginService(ILogger logger)
{
this.logger = logger;
}
}
Am I missing a step along the way?