.NET 8项目启动Swagger报错:无法创建IApiDescriptionProvider实例
解决.NET 8 ASP.NET Core项目Swagger启动时IApiDescriptionProvider实例化错误
报错信息
InvalidOperationException: Failed to create instance of type 'Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider'. Possible reason is cannot match the best constructor of type 'Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetadataApiDescriptionProvider'.
排查及解决步骤
- 清理重建项目:删除项目目录下的
bin、obj文件夹,右键项目选择「清理」,再执行「生成解决方案」,确保编译输出为全新文件。 - 对齐NuGet包版本:核对所有Microsoft.AspNetCore相关包(尤其是
Microsoft.AspNetCore.Mvc.ApiExplorer、Swashbuckle.AspNetCore系列)的版本,确保和原作者完全一致,包括小版本号,避免版本兼容冲突。 - 检查服务注册代码:
- 确认
Program.cs中已正确添加AddEndpointsApiExplorer()和AddSwaggerGen(); - 排查是否存在自定义
IApiDescriptionProvider实现或不当的服务注册逻辑,如有则注释后测试。
- 确认
- 校验控制器路由配置:
- 检查所有控制器的
[HttpGet]/[HttpPost]等属性,确认路由模板无语法错误、无重复路由; - 确保控制器类标记了
[ApiController]属性且继承自ControllerBase。
- 检查所有控制器的
- 重新还原依赖:在NuGet包管理器执行「还原所有NuGet包」,或终端运行
dotnet restore命令,确保依赖完整下载并正确引用。 - 核对启动配置:对比原作者的
Properties/launchSettings.json,确认环境变量、启动URL等配置一致,重点检查ASPNETCORE_ENVIRONMENT设置。
内容的提问来源于stack exchange,提问作者user23496668
相关产品推荐
相关产品推荐

