.NET Core 7中如何用单个Swagger调试两个独立WebApi项目?
在.NET Core 7中实现多WebApi项目共用Swagger调试的方案
方案一:合并两个API的接口到同一Swagger文档
适合希望在单份文档中查看所有接口的场景
第一步:主项目添加对第二个WebApi的项目引用
右键主WebApi项目 → 「添加」→ 「项目引用」,勾选第二个WebApi项目完成引用。第二步:配置Swagger服务(Program.cs)
确保主项目的Swagger配置包含两个项目的控制器及注释(如果需要):builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "合并API文档", Version = "v1" }); // 加载第二个API的XML注释文件 var secondApiXmlPath = Path.Combine(AppContext.BaseDirectory, "SecondApi.xml"); if (File.Exists(secondApiXmlPath)) { c.IncludeXmlComments(secondApiXmlPath, includeControllerXmlComments: true); } // 加载主API的XML注释文件 var mainApiXmlPath = Path.Combine(AppContext.BaseDirectory, "MainApi.xml"); if (File.Exists(mainApiXmlPath)) { c.IncludeXmlComments(mainApiXmlPath, includeControllerXmlComments: true); } });同时给两个项目开启XML文档生成:右键项目 → 「属性」→ 「生成」→ 勾选「XML文档文件」,路径保持默认即可。
第三步:启用Swagger UI中间件
app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "合并API文档 v1"); });启动主项目后,Swagger页面就会展示两个项目的所有接口。
方案二:在同一Swagger UI中切换两个独立API文档
适合需要区分两个项目接口结构的场景
第一步:给两个WebApi分别配置Swagger
每个项目的Program.cs都要添加Swagger服务和中间件,以第二个项目为例:builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Second API", Version = "v1" }); var xmlPath = Path.Combine(AppContext.BaseDirectory, "SecondApi.xml"); c.IncludeXmlComments(xmlPath, includeControllerXmlComments: true); }); // 中间件配置 app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Second API v1"); });第二步:修改主项目的Swagger UI配置
在主项目的Program.cs中,添加第二个API的文档端点(注意替换成实际调试端口):app.UseSwaggerUI(c => { // 主API文档 c.SwaggerEndpoint("/swagger/v1/swagger.json", "Main API v1"); // 第二个API文档,端口号要和第二个项目的调试端口一致 c.SwaggerEndpoint("http://localhost:5001/swagger/v1/swagger.json", "Second API v1"); });第二个项目的调试端口可以在「项目属性」→「调试」中查看。
第三步:同时启动两个项目调试
右键解决方案 → 「设置启动项目」→ 选择「多个启动项目」,将两个项目的操作都设为「启动」。启动后打开主项目的Swagger UI,就能通过顶部下拉菜单切换两个API的文档进行调试。
关键注意事项
- 方案一中要避免路由冲突,建议给两个项目的控制器设置不同的路由前缀,比如主项目用
[Route("api/main/[controller]")],第二个项目用[Route("api/second/[controller]")]。 - 开启XML文档生成时若出现警告,可在项目属性的「生成」→「错误和警告」中,将对应警告编号(如CS1591)设为「无」。
- 方案二中两个项目的调试端口不能重复,若冲突可在项目调试设置中修改端口。
内容的提问来源于stack exchange,提问作者h0pefulJuni-
相关产品推荐
相关产品推荐

