.NET Core WebAPI 部署IIS后 Swagger.json 提示没有找到问题与解决方案
问题:
.NET Core WebAPI 应用程序部署到IIS服务器上运行提示“Not Found /swagger/v1/swagger.json”,但在Visual Stuido工具能正常跑起来。
注:当前WebAPI应用程序是部署在IIS服务器>> Default Web Site 网站下的“应用程序”。
原因:
由IIS在IISExpress\ApplicationURL中的主机名之后的(或没有)附加路径进行托管,例如:
但通过IIS在临时环境上进行部署,主机名之后会增加附加路径。
如:
注:“char”就是附加的路径。
解决方案:
在startup.cs类配置SwaggerUI中间件,指定读取 /swagger/v1/swagger.json 文件路径增加相对路径的判断处理,如下:
app.UseSwaggerUI(c => { string swaggerJsonBasePath = string.IsNullOrWhiteSpace(c.RoutePrefix) ? "." : ".."; c.SwaggerEndpoint($"{swaggerJsonBasePath}/swagger/v1/swagger.json", "My API"); });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!