You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:25:31