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

.NET 8 Swagger UI生成CURL路径错误问题求助

问题解决:.NET 8 Swagger UI生成CURL请求缺失前缀

问题描述

Swagger UI访问地址dev.internal/myapi/swagger/index.html可正常使用,但生成的CURL请求缺失/myapi/前缀——例如正确路径应为dev.internal/myapi/api/v2/configuration/list?page=0,实际生成的路径缺少/myapi/导致请求失败。此前修改UseSwaggerUI配置后,访问地址出现重复的myapi路径(dev.internal/myapi/myapi/swagger/index.html),问题未解决。

解决方案

问题根源在于Swagger生成的swagger.json中未配置正确的基础路径,导致Swagger UI生成请求时缺少前缀。需从Swagger文档生成和UI配置两方面调整:

1. 配置Swagger文档的基础路径

在AddSwaggerGen中添加Server配置,指定包含/myapi的基础路径:

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My Cool API V1", Version = "v1" });
    
    // 添加Server配置,指定API的基础路径前缀
    c.AddServer(new OpenApiServer
    {
        Url = "/myapi",
        Description = "开发环境服务器"
    });
});

2. 正确配置Swagger和SwaggerUI中间件

调整UseSwagger和UseSwaggerUI的路由配置,避免路径重复:

// 配置Swagger文档的访问路径
app.UseSwagger(c =>
{
    // 让swagger.json的访问路径为 /myapi/swagger/{documentName}/swagger.json
    c.RouteTemplate = "myapi/swagger/{documentName}/swagger.json";
});

// 配置Swagger UI的访问路由
app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "myapi/swagger"; // Swagger UI的访问前缀,对应地址dev.internal/myapi/swagger
    // 使用相对路径指向swagger.json,避免重复前缀
    c.SwaggerEndpoint("v1/swagger.json", "My Cool API V1");
});

说明

  • AddSwaggerGen中的AddServer是核心:Swagger UI生成请求时会以该配置的Url作为基础路径,自动为CURL请求加上/myapi前缀。
  • 调整后的配置既保证Swagger UI访问地址正确,又能让生成的请求路径包含所需前缀。

内容的提问来源于stack exchange,提问作者Angel Andres Loaiza Gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:42:56