ASP.NET Core MVC控制器注入IPlayerRepository时抛出数据库连接异常
问题解答
报错原因
该异常为ASP.NET Core依赖注入容器无法解析IPlayerRepository类型服务导致:框架实例化控制器时,会自动从DI容器中匹配构造函数所需的参数实例,未注册对应服务时就会抛出该错误。
解决步骤
- 第一步:补全服务注册
.NET 6及以上版本打开Program.cs,在var app = builder.Build();代码前添加如下注册逻辑:
.NET 5及更早版本打开// 将代码中的PlayerRepository替换为你自己的IPlayerRepository实现类名 builder.Services.AddScoped<IPlayerRepository, PlayerRepository>();Startup.cs,在ConfigureServices方法中添加:
服务生命周期可根据业务需要调整为services.AddScoped<IPlayerRepository, PlayerRepository>();AddSingleton或AddTransient,和其他正常运行的仓储服务保持一致即可。 - 第二步:排查依赖链
若已完成注册仍报错,检查IPlayerRepository实现类的构造函数是否还依赖其他未注册的服务,逐层确认所有依赖项均已完成DI注册。 - 第三步:校验命名与引用
确认接口、实现类的命名空间引用正确,无拼写错误。
你其他控制器的注入逻辑可正常运行,说明DI容器本身配置无问题,大概率是漏加了IPlayerRepository对应的服务注册,补全后即可恢复正常。
内容的提问来源于stack exchange,提问作者Jonathan Small
相关产品推荐
相关产品推荐

