我正在设置Swagger来记录我的API。
我已经用规范json的相对路径设置了SwaggerEndpoint
,如下所示:
在本地调试时,一切正常。但是我的网站仅以http://localhost:44348/index.html
的身份运行。
当我部署到虚拟路径上的IIS时,它崩溃了:
/imaging4castapi_UAT/
作为路径的一部分这是我尝试过的:
RoutePrefix
覆盖。但这无法解决。"~/swagger/..."
之类的应用程序路径,但这是服务器在Razor页面和css之类的视图元素上转换的,因此在Startup
中不起作用。我正在努力了解这是客户端设置问题还是与我的网站在IIS上的托管方式有关的问题。
有想法吗?
答案 0 :(得分:2)
尝试使用相对路径:
setupAction.SwaggerEndpoint("../swagger/Imaging4CastApiSpecification/swagger.json", "4Cast API");
请注意以下问题的答案和解释:SwashBuckle
答案 1 :(得分:1)
Swagger默认情况下不支持虚拟目录。尝试将其添加到您的Startup.cs
app.UseSwagger(c =>
{
c.RouteTemplate = "virtual_path/{documentName}/swagger.json";
});
app.UseSwaggerUI(c =>
{
//Include virtual directory
c.RoutePrefix = "virtual_path";// add your virtual path here.
c.SwaggerEndpoint("v1/swagger.json", "Api v1");
});
答案 2 :(得分:1)
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"./v1/swagger.json", "Api v1");
});