惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
D
DataBreaches.Net
J
Java Code Geeks
月光博客
月光博客
MyScale Blog
MyScale Blog
博客园 - Franky
Jina AI
Jina AI
量子位
博客园 - 聂微东
博客园 - 叶小钗
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
小众软件
小众软件
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页

博客园 - uxinxin

.NET10中通过appsettings.json配置文件获取信息的几个方法 学习使用Taurus的微服务群在.NET Framework4.8环境下的搭建 .net framework 中Owin 通过启动类 Startup.cs 使用 SignalR B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【八】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【七】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【六】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【五】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【四】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【三】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【二】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 .NET程序屏蔽一些无效蜘蛛的访问配置 asp.net 动态加载与卸载程序集的尝试(没有成功)欢迎解决的朋友留言告知 Framework 4.6.2下的SignalR使用,以及WPF下同步使用 react 16.8.4版本中的生命周期中的细节 在组件挂在时使用了定时器的处理——尚硅谷React教程(2022加更,B站超火react教程)学习笔记 CYQ.Data的XML操作的一些自己使用记录 IIS URL Rewrite将伪静态配置文件放在web.config外部 ASP.NET Core EF MVC 登录验证 一步步教你用html+div+css+js基于Jquery实现一套数字华容道游戏
.NET10 中配置Swagger的记录
uxinxin · 2026-03-24 · via 博客园 - uxinxin

项目的.csproj配置

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.5" />  
    <PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.5" />
  </ItemGroup>

项目属性配置

项目属性中
生成->输出->文档文件 勾选生成包含API文档的文件

创建一个多版本管理类

我放在了Utility/ApiVersions.cs  注意这里使用字段不是属性,和后面代码的调用对应,如果使用属性需要同步修改后面Program.cs中的代码

    public class ApiVersions
    {
        public string V1;
        public string V2;
        public string V3;
    }

Program.cs中的代码配置

 1 #region 配置Swagger服务
 2 {
 3     builder.Services.AddEndpointsApiExplorer();
 4     builder.Services.AddSwaggerGen(options =>
 5     {
 6         #region 支持注释
 7         string basePath = Path.GetDirectoryName(AppContext.BaseDirectory);
 8         string xmlPath = Path.Combine(basePath, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml");
 9         options.IncludeXmlComments(xmlPath);
10         #endregion
11 
12         #region 支持多版本
13         foreach(FieldInfo field in typeof(ApiVersions).GetFields())
14         {
15             string version = field.Name;
16             options.SwaggerDoc(version, new OpenApiInfo
17             {
18                 Version = version,
19                 Title = $"One API {version}",
20                 Description = $"One API接口文档 {version}"
21             });
22         }
23         #endregion
24     });
25 }
26 #endregion
27 var app = builder.Build();
28 
29 // Configure the HTTP request pipeline.
30 if (app.Environment.IsDevelopment())
31 {
32     app.MapOpenApi();
33 }
34 #region 配置Swagger中间件
35 {
36     app.UseSwagger();
37     app.UseSwaggerUI(options =>
38     {
39         foreach (FieldInfo field in typeof(ApiVersions).GetFields())
40         {
41             string version = field.Name;
42             options.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"One API {version}");
43         }
44         //options.RoutePrefix = string.Empty; // 设置Swagger UI的根路径
45     });
46 }
47 #endregion

这里重点是两部分配置,一部分配置Swagger服务,放在var app = builder.Build();前面,另一部分,Swagger中间件配置放var app = builder.Build();后面