Как исправить ошибку внедрения зависимостей в классе Startup.cs в .NET Core - PullRequest
0 голосов
/ 11 марта 2019

Я использую ASP.NET Core 2.2 Я пытаюсь вызвать базовый класс обслуживания из автозагрузки.Выдает это исключение:

InvalidOperationException: невозможно разрешить службу для типа 'TIR.NetCore.ICommonLogService' при попытке активировать 'AdminCentral.NetCore.Startup'.

Это мой код:

public class Startup
{
    private readonly ICommonLogService _CommonLogService;
    public Startup(IConfiguration configuration, ICommonLogService CommonLogService)
    {
         _CommonLogService = CommonLogService;
         Configuration = configuration;
    }

    public IConfiguration Configuration { get; }
    public string connectionString;

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        var container = new Container();
        container.Configure(config =>
        {
            config.AddRegistry(new StructuremapRegistry());
            config.Populate(services);
        });

        return container.GetInstance<IServiceProvider>();
    }
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      LogException(Exception )
   }

    private void LogException(Exception error, HttpContext context)
    {
         _CommonLogService.InsertLogDetail();
  }
}

1 Ответ

1 голос
/ 11 марта 2019

Если вы хотите использовать ICommonLogService в классе запуска, вам нужно получить экземпляр из контейнера следующим образом:

public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        var container = new Container();
        container.Configure(config =>
        {
            config.AddRegistry(new StructuremapRegistry());
            config.Populate(services);
        });

        //Get an instance of ICommonLogService from container
        ICommonLogService CommonLogService = container.GetInstance<ICommonLogService>();
        //Use CommonLogService here

        return container.GetInstance<IServiceProvider>();
    }
...