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

Swashbuckle.AspNetCore - Is there a way to set the path to swagger.json dynamically?

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

我们可以配置应用程序网关来重写传入的 url 以指向托管服务。类似于示例。com/service1 => 10.11.12.13:1234

问题是swagger文件的路径设置在Startup.cs:

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

此时没有可用的 HttpRequest,所以我无法读取 headers 并进行适当的配置,这就是我们对 PreSerializeFilters 所做的,以便在返回的 swagger.json.

当前,当用户导航到 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 本身的路径吗?

The problem is that the path to the swagger file is set in Startup.cs:

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

设置相对 url 而不是绝对。

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