Swashbuckle.AspNetCore-是否有办法动态设置swagger.json的路径?

时间:2019-07-15 09:53:16

标签: asp.net-core swagger swagger-ui swashbuckle

我需要在Azure应用程序网关后面的多个URL上托管单个服务。 该服务将在内部托管http://10.11.12.13:1234,并且只有一个实例。 这需要通过以下公开网址公开: -foo.example.com/service1 -bar.example.com/service1等。

我们可以配置Application网关以重写进入的URL,以指向托管服务。例如example.com/service1 => 10.11.12.13:1234

问题在于,在Startup.cs中设置了swagger文件的路径:

options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");

目前没有HttpRequest可用,因此我无法读取标头并进行适当的配置,这是我们使用PreSerializeFilters来在返回的swagger.json中设置basePath的方法。

当前,当用户导航到https://foo.example.com/service1/swagger时,swagger UI会尝试从错误的位置https://foo.example.com/swagger/api/swagger.json下拉swagger.json。

它应该是从https://foo.example.com/service1/swagger/api/swagger.json提取的。

是否可以执行与PreSerializeFilters类似的任何操作来设置swagger.json本身的路径?

1 个答案:

答案 0 :(得分:0)

  

问题在于,在Startup.cs中设置了swagger文件的路径:

options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");

设置相对网址,而不是绝对网址。

 options.SwaggerEndpoint("swagger/api/swagger.json", "My API");