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

.NET 6项目Post提交数据至数据库返回500错误排查求助

.NET 6 接口500错误排查结果

核心报错原因

控制台抛出的InvalidOperationException已经明确指向问题:依赖注入容器没有注册LoginService服务。AuthController的构造函数要求DI容器传入LoginService实例,但你在Program.cs里只注册了DbContext、控制器、JWT认证、CORS相关服务,漏了LoginService的注册,容器找不到对应服务就直接抛出异常,这是你改代码后接口500的直接原因。

修复步骤

  1. 打开Program.cs,在服务注册段(即var app = builder.Build();代码之前)添加LoginService的注册代码,Web场景下默认用Scoped生命周期即可:
    builder.Services.AddScoped<LoginService>();
    
  2. 修复LoginService.AddUser方法里的DbContext错误释放问题:你在方法里写了using (var db = _context),会把DI容器注入的DbContext提前释放,后续同个请求里再调用LoginService的其他数据库操作方法时,会触发“对象已释放”的异常,把using块删除,直接用注入的_context操作即可,修正后的代码:
    public bool AddUser(string name, string password, bool trainer)
    {
        var user = new User { Name = name, Password = password, Trainer = trainer };
        _context.User.Add(user);
        _context.SaveChanges();
        return true;
    }
    
  3. (可选清理)删除TrainingAppContext里无意义的隐式转换方法,这段代码没有实际业务作用,误触发时会直接抛NotImplementedException:
    // 删掉这段代码
    public static implicit operator string(TrainingAppContext v)
    {
        throw new NotImplementedException();
    }
    

原始错误关键信息

System.InvalidOperationException: 尝试激活'TrainingApp.Server.Controllers.AuthController'时,无法解析类型为'TrainingApp.Server.Services.LoginService'的服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:36:25