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

为何触发InvalidOperationException:无法解析System.Configuration.Configuration服务?

错误原因及解决方案

错误原因

  1. 依赖类型不匹配:你在ServisController构造函数中依赖的是具体的System.Configuration.Configuration类,但ASP.NET Core的依赖注入(DI)容器默认并未注册这个类,它只注册了IConfiguration接口。DI容器找不到该类的实例,因此抛出激活失败的异常。
  2. 依赖注入不完整:控制器中声明了HANADbContext _context字段,但构造函数未接收该参数并赋值,后续使用时会引发空引用错误。
  3. DbContext配置缺失:Program.cs中调用AddDbContext<HANADbContext>()时未配置数据库连接信息,DbContext无法正常初始化。

解决方案

1. 修改控制器代码,依赖IConfiguration接口并补全DbContext注入

将控制器中的Configuration类型替换为IConfiguration,并在构造函数中注入HANADbContext:

namespace HANACONNECT.Controllers
{
    public class ServisController : Controller
    {
        private readonly IConfiguration _configuration;
        private readonly HANADbContext _context;

        // 注入IConfiguration和HANADbContext
        public ServisController(IConfiguration configuration, HANADbContext context)
        {
            _configuration = configuration;
            _context = context;
        }
    }
}

2. 完善Program.cs中的DbContext配置

针对SAP HANA数据库,配置DbContext的连接字符串(从IConfiguration中读取):

builder.Services.AddControllersWithViews();

// 配置SAP HANA DbContext,从配置文件读取连接字符串
builder.Services.AddDbContext<HANADbContext>(options =>
    options.UseHana(builder.Configuration.GetConnectionString("HANAConnection")));

var app = builder.Build();

// 补充必要的中间件配置
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

注:确保appsettings.json中已配置对应的连接字符串:

{
  "ConnectionStrings": {
    "HANAConnection": "你的SAP HANA连接字符串"
  }
}

关键说明

ASP.NET Core启动时会自动将IConfiguration注册到DI容器,它整合了所有配置源(appsettings.json、环境变量、命令行参数等)的内容。依赖接口而非具体类是DI的最佳实践,既符合依赖倒置原则,也能让容器正确解析依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22