首页 > 后端开发 > C++ > 为什么我的 .NET Core MVC 应用程序无法将注册的服务注入控制器?

为什么我的 .NET Core MVC 应用程序无法将注册的服务注入控制器?

Susan Sarandon
发布: 2025-01-23 17:47:09
原创
194 人浏览过

Why Does My .NET Core MVC App Fail to Inject a Registered Service into a Controller?

.NET Core MVC 应用中控制器依赖注入失败的解决方法

在您的 .NET Core MVC 应用中,尝试将 BloggerRepository 注入 BlogController 时出现错误,提示信息如下:

<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
登录后复制

让我们分析代码来理解这个错误:

仓储层:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>
登录后复制

控制器:

<code>public class BlogController : Controller
{
    private readonly IBloggerRepository _repository;
    public BlogController(BloggerRepository repository) { ... }
}</code>
登录后复制

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
登录后复制

错误表明依赖注入系统无法为 BlogController 构造函数提供 BloggerRepository 实例。

问题在于控制器期望 BloggerRepository 的具体类,而依赖注入容器却被告知将接口 IBloggerRepository 与具体实现注册。

解决方案:

为了解决这个问题,修改控制器的构造函数,使其接受接口而不是具体类:

<code>public BlogController(IBloggerRepository repository) { ... }</code>
登录后复制

通过这种修改,依赖注入容器现在可以成功解析依赖项并提供 IBloggerRepository 的实例,该实例将自动实例化为 BloggerRepository

注意: 不同的包可能有其自己的服务注册方式。建议始终查阅其文档以获取具体的指导。

以上是为什么我的 .NET Core MVC 应用程序无法将注册的服务注入控制器?的详细内容。更多信息请关注PHP中文网其他相关文章!

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