NopCommerce开发Web应用遇DependencyResolutionException问题求助
问题分析与解决方法
错误原因
你遇到的DependencyResolutionException是因为**testContext没有被正确注册到Autofac使用的服务容器中**。你的Main方法里单独创建了一个HostBuilder并配置了DbContext,但实际运行的是CreateHostBuilder返回的Host实例,这个实例的服务容器并没有包含testContext的注册信息,导致Autofac无法解析控制器构造函数中的testContext参数。
解决方案
1. 修正Program.cs的服务注册
把AddDbContext的配置移到CreateHostBuilder的ConfigureServices方法中,确保服务注册到正确的容器里:
public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) { return Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureServices(services => { services.AddDbContext<testContext>(options => options.UseSqlServer("Server=HP\\KARIM;Database=test;Trusted_Connection=True;MultipleActiveResultSets=true")); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
2. 优化testContext的构造函数(可选但推荐)
删除或私有化无参构造函数,避免Autofac在解析时选择错误的构造函数:
public partial class testContext : DbContext { public testContext(DbContextOptions<testContext> options) : base(options) { } // 私有化无参构造,防止被Autofac选中 private testContext() { } }
验证
修改后重新启动应用,访问http://localhost:15536/invoicesells,Autofac应该能正常解析testContext并注入到控制器中,异常会消失。
内容的提问来源于stack exchange,提问作者Karim Hassan
相关产品推荐
相关产品推荐

