У меня есть Asp. Net Приложение Core 3 с использованием Serilog и Autofa c. Я получаю следующее исключение:
DependencyResolutionException: ни один из конструкторов, найденных с 'Autofa c .Core.Activators.Reflection.DefaultConstructorFinder' для типа 'MyApp.Services.LoginService', не может быть вызывается с доступными службами и параметрами: Не удается разрешить параметр 'Microsoft.Extensions.Logging.ILogger logger' конструктора '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();
В 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();
В контроллере:
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;
}
}
А в сервисе (в отдельном проекте):
public class LoginService : ILoginService
{
private readonly ILogger logger;
public LoginService(ILogger logger)
{
this.logger = logger;
}
}
Я пропускаю шаг по пути?