.NET 10配置Swagger授权按钮时遇OpenApiReference找不到错误
.NET 10中Swagger添加授权按钮时遇到
OpenApiReference找不到的问题 错误信息
找不到类型或命名空间名称‘OpenApiReference’(是否缺少using指令或程序集引用?)
错误截图:
相关代码
C#配置代码
using Microsoft.OpenApi; builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "LMS API", Version = "v1" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Name = "Authorization", Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", BearerFormat = "JWT", In = ParameterLocation.Header, Description = "Here Enter JWT Token with bearer format like bearer[space] token" }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id="Bearer" } },new string[]{ } } }); } );
项目包引用
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.2" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.0" /> </ItemGroup>
解决办法
问题根源是命名空间引用错误:OpenApiReference、ReferenceType等类型属于Microsoft.OpenApi.Models命名空间,而非当前代码中的Microsoft.OpenApi。
1. 修正命名空间
将代码顶部的引用替换为:
using Microsoft.OpenApi.Models;
2. 修正后的完整代码
using Microsoft.OpenApi.Models; builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "LMS API", Version = "v1" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Name = "Authorization", Type = SecuritySchemeType.ApiKey, Scheme = "Bearer", BearerFormat = "JWT", In = ParameterLocation.Header, Description = "请输入JWT Token,格式为 bearer[空格]token" }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, Array.Empty<string>() } }); });
3. 验证包引用
当前项目的包引用版本兼容,无需调整,确保已正确安装这些包即可。
内容的提问来源于stack exchange,提问作者anony
相关产品推荐
相关产品推荐

