ASP.NET Core报错System.InvalidOperationException:缺少Controllers服务
问题解决:Unable to find the required services 异常
错误原因
你的代码缺少ASP.NET Core控制器运行所需的核心服务注册步骤。错误提示明确要求调用IServiceCollection.AddControllers(),但你的Program.cs仅注册了OpenAPI和DbContext服务,未添加控制器服务,导致app.MapControllers()无法找到依赖服务而抛出异常。
解决方案
在服务注册部分添加AddControllers()方法,具体位置可放在AddOpenApi()之后、AddDbContext()前后均可,修改后的完整代码如下:
using API.Data; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddOpenApi(); // 注册控制器所需服务 builder.Services.AddControllers(); builder.Services.AddDbContext<StoreContext>(opt => { opt.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")); }); var app = builder.Build(); app.MapControllers(); Dbinitializer.InitDb(app); app.Run();
说明
AddControllers()会注册控制器、模型绑定、数据验证等ASP.NET Core MVC控制器运行必需的核心服务,只有先完成这一步注册,后续的MapControllers()才能正常创建控制器端点路由。
内容的提问来源于stack exchange,提问作者Yuri Mckoy
相关产品推荐
相关产品推荐

