Asp.Net Core尚未注册类型服务

时间:2018-08-22 07:49:28

标签: asp.net-core dependency-injection

我有以下两个课程

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时出现以下错误→

  

InvalidOperationException:没有为类型“ TrainingCommerce.Accessors.RepositoryConnection”注册任何服务。


由于发表评论,我立即注意到了我的错误做法。 我试图在另一行访问

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

1 个答案:

答案 0 :(得分:0)

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

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

所以:

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