首页 > 解决方案 > Asp.Net Core 没有注册类型的服务

问题描述

我有以下两个课程

public class RepositoryConnection : IRepositoryConnection{

    public RepositoryConnection(IConfiguration configuration, ILogger<RepositoryConnection> logger){
    //STUFF
    }

}

public class AuthenticationTokenFactory : IAuthenticationTokenFactory {

   public AuthenticationTokenFactory(ILogger<AuthenticationTokenFactory> logger) {
    //STUFF 
    }
}

这是我的 Startup.cs

public class Startup {

    public Startup(IConfiguration configuration) {
        Configuration = configuration;
    }
    public void ConfigureServices(IServiceCollection services) {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddSingleton<IAuthenticationTokenFactory, AuthenticationTokenFactory>();
        services.AddSingleton<IRepositoryConnection,RepositoryConnection>();
   }
}

我可以成功注入IAuthenticationTokenFactory控制器,但是当我尝试注入时IRepositoryConnection出现以下错误→</p>

InvalidOperationException:未注册“TrainingCommerce.Accessors.RepositoryConnection”类型的服务。


感谢评论,我立即注意到我的错误方式。我试图在另一条线路上访问

var debug = ControllerContext.HttpContext.RequestServices.GetRequiredService<RepositoryConnection>();

标签: asp.net-coredependency-injection

解决方案


尝试注入接口而不是实现:

在您注入的样本中,ILogger<RepositoryConnection> logger这是一个错字,应该是:ILogger<IRepositoryConnection> logger.

所以:

public class RepositoryConnection : IRepositoryConnection{
    public RepositoryConnection(IConfiguration configuration, ILogger<IRepositoryConnection> logger){
    //STUFF
    }
}

推荐阅读