ASP.NET Core 6 Web API自定义路由下Swagger UI访问报错求助
问题分析与解决方案
你的问题出在SwaggerUI的SwaggerEndpoint路径配置错误,导致请求路径被重复拼接。
当前你的SwaggerUI路由前缀是ForecastService/swagger,而你配置的SwaggerEndpoint("ForecastService/v1/swagger.json", ...)会基于这个前缀生成完整请求路径:ForecastService/swagger/ForecastService/v1/swagger.json,但实际你的Swagger文档的正确路径是ForecastService/v1/swagger.json(由UseSwagger的RouteTemplate定义),所以出现了404。
修改方案二选一:
方案1:使用相对路径配置SwaggerEndpoint
调整SwaggerEndpoint的路径为相对路径,基于SwaggerUI的路由前缀向上一级:
app.UseSwaggerUI(c => { c.SwaggerEndpoint("../v1/swagger.json", "Forecast API"); c.RoutePrefix = "ForecastService/swagger"; });
方案2:使用绝对路径配置SwaggerEndpoint
直接指定完整的根相对路径:
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/ForecastService/v1/swagger.json", "Forecast API"); c.RoutePrefix = "ForecastService/swagger"; });
验证修改效果
修改后重新启动项目,访问http://localhost:5113/ForecastService/swagger/index.html,SwaggerUI就能正确加载ForecastService/v1/swagger.json文档了。
内容的提问来源于stack exchange,提问作者user584018
相关产品推荐
相关产品推荐

