asp.net-core - 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>();
解决方案
尝试注入接口而不是实现:
在您注入的样本中,ILogger<RepositoryConnection> logger
这是一个错字,应该是:ILogger<IRepositoryConnection> logger
.
所以:
public class RepositoryConnection : IRepositoryConnection{
public RepositoryConnection(IConfiguration configuration, ILogger<IRepositoryConnection> logger){
//STUFF
}
}
推荐阅读
- php - 我要在 laravel 中迁移一个表,但有问题
- r - 如何根据行号在 R 中添加“组”列
- git - 在本地找不到 git 合并历史记录
- sql - 根据父表中的条件在子表中插入一行 - Oracle DBMS
- python - Python Curses - 如何水平分隔多个菜单选项?
- c - 如何从用户输入的单词中删除字符(不是元音)?
- javascript - 使用mailto时如何使主题不是消息:在html和javascript中?
- arrays - 如何在经典 ASP 中搜索字符串以查找数组中的任何字符?
- javascript - 如何为 node.js 使用 coinbase API
- php - 如何将关联数组传递给PHP中的函数参数