通过代理转发后,webapi的swagger无法访问,本质原因是代理后url路径发生变化导致/swagger无法定位到json。
#https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
相关issue:
https://github.com/microsoft/service-fabric-issues/issues/327
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/662
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/427
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/380
issue评论中,一般推荐通过PreSerializeFilters设置BasePath的方案,但在5.x版本中BasePath被删除了。最终选择使用设置相对路径的方案:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/380#issuecomment-374711180
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "My API V1");
});