You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:33:21