欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果

【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果

2025/4/3 7:50:41 来源:https://blog.csdn.net/lmy_520/article/details/146934722  浏览:    关键词:【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果

🌹欢迎来到《小5讲堂》🌹
🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹
🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹

在这里插入图片描述

目录

  • 前言
  • 报错信息
  • 错误原因分析
    • 解决方案
      • 1. 确保 `LogAsyncTool` 已注册
      • 2. 检查 `LogAsyncTool` 的依赖
      • 3. 检查 `GlobalExceptionHandler` 的构造函数
      • 4. 检查命名空间和程序集引用
      • 5. 如果是泛型或特殊类型
    • 调试技巧
  • 相关文章

前言

最近从0开始搭建.net core 6.0的启动环境,顺便也熟悉下最小启动单元,
有时候时间久了,就容易忘记一些知识点和用法。
下面就是在构建最小启动单元时,一点一点东西往里面添加的时候出现的报错,
刚开始还有点懵逼,现在有AI来找原因特别容易,AI给出的信息真是醍醐灌顶,一语中的。
看看博主是如何使用DeepSeek找原因的?

报错信息

System.AggregateException:“
Some services are not able to be constructed(Error while validating the service descriptor 'ServiceType: ApiV2.Tool.GlobalExceptionHandler Lifetime: Transient ImplementationType: ApiV2.Tool.GlobalExceptionHandler': Unable to resolve service for type 'ToolV2.LogAsyncTool' while attempting to activate 'ApiV2.Tool.GlobalExceptionHandler'.)

在这里插入图片描述

错误原因分析

这个错误表明在你的 C# 项目中,依赖注入(DI)系统无法解析 GlobalExceptionHandler 所需的 LogAsyncTool 服务。

  1. GlobalExceptionHandler 类在其构造函数中需要 LogAsyncTool 类型的参数
  2. 但你的 DI 容器中没有注册 LogAsyncTool 服务
  3. 或者 LogAsyncTool 本身也有依赖项无法解析

解决方案

1. 确保 LogAsyncTool 已注册

在你的 Startup.cs 或 Program.cs 中,确保已经正确注册了 LogAsyncTool 服务:

// 如果是 transient 生命周期
services.AddTransient<LogAsyncTool>();// 或者如果是 singleton
services.AddSingleton<LogAsyncTool>();// 或者如果有接口
services.AddTransient<ILogAsyncTool, LogAsyncTool>();

2. 检查 LogAsyncTool 的依赖

如果 LogAsyncTool 本身也有依赖项,确保这些依赖项都已注册:

// 例如,如果 LogAsyncTool 需要其他服务
services.AddTransient<ILoggerService, LoggerService>();
services.AddTransient<LogAsyncTool>();

3. 检查 GlobalExceptionHandler 的构造函数

确保 GlobalExceptionHandler 的构造函数正确声明了对 LogAsyncTool 的依赖:

public class GlobalExceptionHandler
{private readonly LogAsyncTool _logTool;public GlobalExceptionHandler(LogAsyncTool logTool){_logTool = logTool;}// ... 其他代码
}

4. 检查命名空间和程序集引用

确保:

  • LogAsyncTool 类所在的程序集已被引用
  • 使用了正确的命名空间
  • 没有拼写错误

5. 如果是泛型或特殊类型

如果 LogAsyncTool 是泛型或特殊类型,可能需要特殊注册方式:

services.AddTransient(typeof(LogAsyncTool<>));

调试技巧

  1. 使用 TryAdd 方法可以避免重复注册问题:

    services.TryAddTransient<LogAsyncTool>();
    
  2. 检查所有相关类的访问修饰符是否为 public

  3. 使用 GetService 手动测试是否能解析服务:

    var provider = services.BuildServiceProvider();
    var service = provider.GetService<LogAsyncTool>();
    

按照这些步骤检查后,应该能解决这个依赖注入错误。如果问题仍然存在,可能需要检查更具体的项目结构。

相关文章

【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果

【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录

【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理

【C#】已经实体类和动态实体类的反射使用方法,两分钟回顾,码上就懂

【C#】使用vue3的axios发起get和post请求.net framework部署的API显示跨域

【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀博主,可查看博主个人中心查看信息。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词