使用 Swashbuckle 更改 swagger JSON 的位置

Son*_*ate 7 swagger swagger-ui swashbuckle

我正在尝试配置 Swashbuckle,以便可以使用 URL {root}/swagger.json 访问生成的 JSON 文件。

我已经操纵了许多设置,但一直无法让它工作。这里有些例子:

// This works!  JSON file is located at http://{root}/swagger/docs/v1
this.EnableSwagger(c =>
{
    c.RootUrl(x => baseUrl);
    c.SingleApiVersion("v1", title);
}).EnableSwaggerUi();

This works!  JSON file is located at http://{root}/swagger/docs/swagger
this.EnableSwagger(c =>
{
    c.RootUrl(x => baseUrl);
    c.SingleApiVersion("swagger", title);
}).EnableSwaggerUi();

// This does not work.  JSON file is located at http://{root}/swagger
this.EnableSwagger("{apiVersion}", c =>
{
    c.RootUrl(x => baseUrl);
    c.SingleApiVersion("swagger", title);
}).EnableSwaggerUi();

// This does not work.  JSON file is located at http://{root}/foo/swagger
this.EnableSwagger("foo/{apiVersion}", c =>
{
    c.RootUrl(x => baseUrl);
    c.SingleApiVersion("swagger", title);
}).EnableSwaggerUi();
Run Code Online (Sandbox Code Playgroud)

我们如何配置 Swashbuckle 以便文件名为“swagger.json”,并且可以从与“/swagger/docs”不同的路径访问它——最好是应用程序的根目录?

Nan*_*dun 11

如果有人还在寻找:

这种方法对我有用:

app.UseSwagger() 变化:

 app.UseSwagger(c =>
 {
      c.RouteTemplate = "SampleApi/swagger/{documentName}/swagger.json";
 });
Run Code Online (Sandbox Code Playgroud)

app.UseSwaggerUI() 变化:

 app.UseSwaggerUI(c =>
 {
      c.SwaggerEndpoint("/SampleApi/swagger/v1/swagger.json", "Sample API");
      c.RoutePrefix = "SampleApi/swagger";
 });
Run Code Online (Sandbox Code Playgroud)