首页 > 后端开发 > C++ > 为什么我的 .NET Core MVC 应用程序在使用依赖注入时抛出'无法解析服务”?

为什么我的 .NET Core MVC 应用程序在使用依赖注入时抛出'无法解析服务”?

Barbara Streisand
发布: 2025-01-23 17:51:08
原创
135 人浏览过

Why Does My .NET Core MVC App Throw

.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 的依赖项。

问题分析

涉及以下组件:

  • 仓储: IBloggerRepository 接口及其实现 BloggerRepository。
  • 控制器: 使用 BloggerRepository 的 BlogController。
  • Startup.cs: 注册依赖注入服务的配置。

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板