.NET Core MVC 应用抛出依赖注入错误:激活期间无法解析服务类型
在 .NET Core MVC 应用中实现依赖注入和仓储模式时,可能会遇到以下错误:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
此错误表明应用程序无法创建 BlogController 实例,因为它无法解析 BloggerRepository 的依赖项。
问题分析
涉及以下组件:
在 Startup.cs 文件中,您已注册 IBloggerRepository 的依赖项:
<code class="language-csharp">services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
这意味着每当应用程序需要 IBloggerRepository 时,它都会创建一个 BloggerRepository 实例并将其注入。
但是,BlogController 在其构造函数中直接请求具体的 BloggerRepository 类:
<code class="language-csharp">public BlogController(BloggerRepository repository)</code>
这会导致依赖注入容器失败,因为它不知道如何在请求其接口时创建具体类的实例。
解决方案
要解决此问题,请将 BlogController 的构造函数更改为接受 IBloggerRepository 接口:
<code class="language-csharp">public BlogController(IBloggerRepository repository)</code>
通过接受接口,依赖注入容器现在可以成功解析依赖项并创建 BlogController 实例。
其他说明
在某些情况下,可能需要为某些类型使用自定义注册方法。例如,要注册 IHttpContextAccessor 服务,可以使用:
<code class="language-csharp">services.AddHttpContextAccessor();</code>
始终查阅外部 NuGet 包的文档以确定是否需要自定义注册。
以上是为什么我的 .NET Core MVC 应用程序在使用依赖注入时抛出'无法解析服务”?的详细内容。更多信息请关注PHP中文网其他相关文章!