C# 如何指定swagger的默认打开版本?

C# 如何指定swagger的默认打开版本?,c#,asp.net-core,swagger,swashbuckle,C#,Asp.net Core,Swagger,Swashbuckle,我有一个C#web API,它使用Swagger作为API文档。我用的是虚张声势的皮带扣包装。swagger环境正在使用我在控制器中指定的多个版本 今天我介绍了一个新的未来版本(1.2),它仍在开发中。默认情况下,我想在1.1版上打开swagger,但在右上角的下拉列表中仍然保持正确的排序顺序(例如v1、v1.1、v1.2)。目前,它总是在下拉列表中打开顶部版本 有人知道怎么做吗 在Startup.cs-configure方法中配置Swagger UI的顺序决定了下拉列表顺序。默认情况下,UI显

我有一个C#web API,它使用Swagger作为API文档。我用的是虚张声势的皮带扣包装。swagger环境正在使用我在控制器中指定的多个版本

今天我介绍了一个新的未来版本(1.2),它仍在开发中。默认情况下,我想在1.1版上打开swagger,但在右上角的下拉列表中仍然保持正确的排序顺序(例如v1、v1.1、v1.2)。目前,它总是在下拉列表中打开顶部版本

有人知道怎么做吗


在Startup.cs-configure方法中配置Swagger UI的顺序决定了下拉列表顺序。默认情况下,UI显示与下拉列表中第一个选项对应的规范

我们可以如下所示更改版本顺序,但我不确定是否有任何属性可以覆盖默认版本,同时保留UI中版本的下拉顺序

在下面的示例中,默认情况下它将打开v1.1

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1.1/swagger.json", "V1.1");
    c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "V1.0");
    c.SwaggerEndpoint("/swagger/v1.2/swagger.json", "V1.2");
}
https://localhost:5001/swagger/index.html?urls.primaryName=v1.1
但是,有一个解决方法:可以传递querystring参数urls.primaryName的值,以便默认情况下加载该版本

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1.1/swagger.json", "V1.1");
    c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "V1.0");
    c.SwaggerEndpoint("/swagger/v1.2/swagger.json", "V1.2");
}
https://localhost:5001/swagger/index.html?urls.primaryName=v1.1
(或) 您可以尝试通过注入自定义javascript来定制Swagger UI,如下所示:

app.UseSwaggerUI( 
            ....
            c => c.InjectJavascript(***pass custom javascript here***) )

扩展Bob的答案:解决方案是编辑Properties/launchSettings.json:

"profiles": {
  "Command.Broker": {
    "commandName": "Project",
    "launchBrowser": true,
    "launchUrl": "swagger/index.html?urls.primaryName=v1.1",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "applicationUrl": "http://localhost:51476/"
  },
}

我只是将首页重定向到配置文件中指定的版本。net核心的示例

...
string SwaggerStartupVersion = "V2";
...

    public void ConfigureApp(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider provider)
    {
        app.Use(async (context, next) =>
        {
            var isFrontPage = context.Request.Path.Value == "/index.html" && !context.Request.QueryString.HasValue;
            if (isFrontPage)
            {
                context.Response.Redirect($"/index.html?urls.primaryName={SwaggerStartupVersion}");
                return;
            }

            await next();
        });

如何在Startup.cs中添加版本?