.NET5开发ASP.NET Core Web API时httprepl找不到OpenAPI描述
故障排查与解决方案
前置检查
确认你要连接的ASP.NET Core Web API应用已经正常启动,占用的端口确实是5000,没有被其他程序占用,也没有配置成HTTPS-only强制跳转。如果是HTTPS的话地址要写成https://localhost:5001之类的对应端口。
第一步:确认OpenAPI(Swagger)服务已正确启用
.NET5的Web API模板默认仅在开发环境加载Swagger中间件,先检查项目配置:
- 确认
Startup.cs的ConfigureServices方法中存在Swagger注册代码:
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "ContosoPizza", Version = "v1" }); });
- 确认
Configure方法中Swagger中间件在你当前运行的环境下会被加载:默认模板中Swagger相关代码是包裹在if (env.IsDevelopment())判断内的,如果你用生产环境启动应用就不会加载Swagger,要么把Swagger代码移到判断外,要么确认启动应用时的环境变量为Development。 - 应用启动后手动访问
http://localhost:5000/swagger/v1/swagger.json,确认能正常返回JSON文件,如果打不开说明Swagger本身配置错误,先修复该问题再使用httprepl。
第二步:连接时指定OpenAPI描述路径
如果上述swagger.json可以正常访问,连接时直接指定路径即可:
httprepl http://localhost:5000 --openapi /swagger/v1/swagger.json
也可以进入httprepl交互模式后指定路径:
(Disconnected)> connect http://localhost:5000 --openapi /swagger/v1/swagger.json
第三步:配置httprepl默认搜索路径(可选)
如果需要频繁使用httprepl调试同类型项目,可以设置全局默认的OpenAPI搜索路径:
httprepl config set OpenAPI:SearchPaths:0 /swagger/v1/swagger.json
设置完成后后续连接.NET5 Web API项目时,会自动搜索对应路径的OpenAPI描述文件,不需要每次手动指定。
第四步:验证功能
连接成功后执行ls命令即可看到已定义的控制器节点,进入对应节点后就可以正常发起get、post等请求。
内容的提问来源于stack exchange,提问作者Artkanoid
相关产品推荐
相关产品推荐

