You need to enable JavaScript to run this app. ASP.NET Core 5 MVC封装DryIoc时IHost未注册错误解决问询
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5 MVC封装DryIoc时IHost未注册错误解决问询

需要提供的代码片段

  • 自定义IServiceProviderFactory实现的完整代码,尤其是CreateBuilder、CreateServiceProvider两个核心方法的实现逻辑
  • 自定义DIContainer封装类的核心代码,确认其是否持有DryIoc 4.7.5的IContainer原生实例、是否实现了IServiceProvider相关接口
  • Program.cs中Host创建、DryIoc工厂注入的完整代码
  • Startup.cs(如果使用)中ConfigureServices方法的实现,以及DryIoc容器配置相关的代码

解决思路

IHost未注册报错的本质是ASP.NET Core内置服务没有被正确合并到自定义DryIoc容器中,导致Host构建时找不到自身依赖的服务。对应优化点如下:

  1. 不要直接返回自定义DIContainer作为CreateBuilder的返回值,兼容方案为:DIContainer内部持有DryIoc原生IContainer实例,CreateBuilder方法返回原生IContainer作为构建器,最后在CreateServiceProvider方法中将原生容器的ServiceProvider绑定到DIContainer对外暴露的解析逻辑上,既保留原有封装,又符合DryIoc适配ASP.NET Core的接口规范。
  2. 必须调用DryIoc官方适配包的Populate方法,将IServiceCollection中注册的所有ASP.NET Core内置服务(包括IHost相关服务)填充到DryIoc容器中,漏写该步骤会直接出现内置服务找不到的报错。
  3. 确认Program.cs中是通过UseServiceProviderFactory方法注入自定义工厂实现,而非手动替换ServiceProvider,避免破坏Host构建流程。
  4. DryIoc 4.7.5对ASP.NET Core 5的适配逻辑与3.1完全兼容,无需额外调整适配规则,仅需确保容器配置时开启了WithAspNetCore()相关配置开关,兼容ASP.NET Core的服务解析规则。

内容的提问来源于stack exchange,提问作者TimH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 05:54:05