我需要在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本身的路径?
答案 0 :(得分:0)
问题在于,在Startup.cs中设置了swagger文件的路径:
options.SwaggerEndpoint("/swagger/api/swagger.json", "My API");
设置相对网址,而不是绝对网址。
options.SwaggerEndpoint("swagger/api/swagger.json", "My API");