ASP.NET Core 9 Web API启动时GetSwagger方法未实现错误排查
解决ASP.NET Core 9中Swashbuckle.AspNetCore的TypeLoadException问题
可能的原因及修复步骤
1. 统一Swashbuckle包版本
ASP.NET Core 9对Swashbuckle包版本有严格的兼容性要求,9.0.4版本可能存在适配问题。直接安装适配ASP.NET Core 9的最新稳定版,执行以下NuGet命令:
Install-Package Swashbuckle.AspNetCore -Version 9.1.0
确保所有Swashbuckle相关子包(Swagger、SwaggerGen、SwaggerUI)版本完全一致,避免版本混合导致的冲突。
2. 清理编译缓存
- 删除项目根目录下的
bin和obj文件夹,彻底清除旧编译产物 - 执行命令重新清理并构建项目:
dotnet clean dotnet build
3. 检查项目文件中的包引用
打开.csproj文件,确认所有Swashbuckle相关引用版本统一,示例如下:
<PackageReference Include="Swashbuckle.AspNetCore" Version="9.1.0" /> <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="9.1.0" /> <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="9.1.0" />
修改不一致的版本后,执行命令重新还原依赖:
dotnet restore
4. 简化Swagger配置代码
暂时移除自定义的Swagger扩展逻辑,使用ASP.NET Core 9标准配置验证是否正常启动:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new() { Title = "MyAPI", Version = "v1" }); }); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyAPI v1")); } app.UseHttpsRedirection(); app.MapControllers(); app.Run();
如果简化后能正常启动,再逐步恢复自定义配置,排查冲突点。
5. 排查全局程序集缓存冲突
检查系统全局程序集缓存(GAC)中是否存在旧版本Swashbuckle包,执行命令查看:
gacutil /l Swashbuckle.AspNetCore.SwaggerGen
若存在旧版本,执行命令卸载:
gacutil /u Swashbuckle.AspNetCore.SwaggerGen
之后重新构建项目验证。
内容的提问来源于stack exchange,提问作者Wallace B. McClure
相关产品推荐
相关产品推荐

