一个 .NET Core MVC 应用在尝试将存储库依赖项注入控制器时遇到错误。错误信息如下:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
该错误表明应用程序无法创建 BloggerRepository
类的实例来传递给 BlogController
构造函数。尽管 BloggerRepository
已在启动类中注册:
<code class="language-csharp">services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
问题在于控制器类直接请求具体的 BloggerRepository
类。然而,依赖注入容器只知道如何创建 IBloggerRepository
接口的实例。要解决此错误,应将控制器调整为接受接口:
<code class="language-csharp">public BlogController(IBloggerRepository repository) { _repository = repository; }</code>
对于外部 NuGet 包,务必查阅其文档,因为它们可能有特定的注册要求。例如,要解决关于 IHttpContextAccessor
的错误消息:
<code>Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' ...</code>
解决方案是使用自定义扩展方法:
<code class="language-csharp">services.AddHttpContextAccessor();</code>
以上是为什么我的 .NET Core MVC 应用程序无法注入存储库依赖项?的详细内容。更多信息请关注PHP中文网其他相关文章!