简体   繁体   English

如何修复 .NET Core 中 Startup.cs 类中的依赖注入错误

[英]How to fix the Dependency Injection error in Startup.cs class in .NET Core

I use ASP.NET Core 2.2 I am trying to call a basic service class from Startup.我使用 ASP.NET Core 2.2 我试图从 Startup 调用基本服务类。 It is throwing this exception:它抛出这个异常:

InvalidOperationException: Unable to resolve service for type 'TIR.NetCore.ICommonLogService' while attempting to activate 'AdminCentral.NetCore.Startup'. InvalidOperationException:尝试激活“AdminCentral.NetCore.Startup”时无法解析“TIR.NetCore.ICommonLogService”类型的服务。

This my code:这是我的代码:

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();
  }
}

If you want to use ICommonLogService in the Startup.cs class, you need to get an instance from the container like this:如果你想在Startup.cs类中使用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>();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM