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

.NET 6 激活StudentController时无法解析DB_Context服务如何解决?

报错原因说明

  • 第一个报错 InvalidOperationException: Unable to resolve service for type 'mvc_net6.Service.DB_Context' 是因为你没有将自定义的DB_Context注册到ASP.NET Core依赖注入容器中,控制器构造函数注入时找不到对应服务。
  • 第二个报错 System.InvalidOperationException: Cannot modify ServiceCollection after application is built 是因为你将AddDbContext服务注册代码写在了builder.Build()之后,调用Build()方法后服务容器已经构建完成,不允许再修改服务集合,同时你还重复编写了中间件配置、app.Run()代码,执行逻辑完全混乱。

修复步骤

1. 调整Program.cs代码逻辑

ASP.NET Core的执行顺序要求:先注册所有服务,再构建应用,最后配置中间件启动应用,修改后的Program.cs代码如下:

using Microsoft.EntityFrameworkCore;
using mvc_net6.Service;
using MySqlConnector;

var builder = WebApplication.CreateBuilder(args);

// 所有服务注册必须放在builder.Build()之前
// 读取配置中的数据库连接字符串
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
// 适配你的MariaDB版本,也可使用ServerVersion.AutoDetect(connectionString)自动识别版本
var serverVersion = new MariaDbServerVersion(new Version(10, 5, 12));
// 注册DB_Context服务
builder.Services.AddDbContext<DB_Context>(opt =>
{
    opt.UseMySql(connectionString, serverVersion);
});

// Add services to the container.
builder.Services.AddControllersWithViews();

// 服务全部注册完成后再构建应用
var app = builder.Build();

// 配置中间件管道
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

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

// 全局只保留一个app.Run()
app.Run();

2. 配置数据库连接字符串

打开项目根目录的appsettings.json,添加数据库连接配置,替换为你自己的数据库信息:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "server=127.0.0.1;port=3306;database=你的数据库名;user=数据库用户名;password=数据库密码;CharSet=utf8mb4;"
  }
}

修改完成后重新运行项目即可解决两个报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:24:02