使用Swashbuckle更改Swagger JSON的位置

10

我正在尝试配置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();

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

你找到答案了吗? - Nandun
1个回答

16

如果还有人在寻找相关信息:

这个方法 对我很有用:

app.UseSwagger() changes:

 app.UseSwagger(c =>
 {
      c.RouteTemplate = "SampleApi/swagger/{documentName}/swagger.json";
 });

app.UseSwaggerUI() changes:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接