使用WSO2 API Manager测试REST接口时出现404 Not Found错误求助
问题描述
我正在使用WSO2 API Manager发布对接REST服务的WebApi网关,该网关基于.NET Core 3.1构建,采用Swagger 2.0规范。通过Swagger页面(swagger/index.html)测试GET服务时能正常返回结果,但通过WSO2 API Manager测试该服务时却返回404 Not Found错误,无法定位问题出在WSO2、Swagger还是.NET Core 3.1环节。
相关截图:
排查步骤
1. 校验WSO2与后端服务的路径匹配
- 核对WSO2中配置的API上下文路径、资源路径是否和.NET Core服务的实际路径完全一致,注意大小写(.NET Core路由默认大小写敏感)。比如Swagger中接口路径是
/api/user/{id},WSO2不能配置成/user/{id}。 - 确认WSO2里的后端服务URL是否正确指向.NET Core服务的部署地址,包括协议(http/https)、端口是否对外开放,是否能直接访问。
- 检查WSO2的请求转发规则,是否在转发时修改了请求路径,比如额外添加了前缀或截断了原有路径。
2. 确认Swagger定义与实际服务一致性
- 对比Swagger 2.0文件的
paths节点,检查GET接口的路径、参数(路径/查询参数)是否和.NET Core控制器的[Route]、[HttpGet]注解完全匹配。 - 查看Swagger文件是否配置了
basePath,若有,确认WSO2是否正确处理该前缀,是否需要在API配置中同步添加对应路径。
3. 检查.NET Core服务的路由与访问配置
- 查看
Startup.cs中的路由配置,确认启用的路由模式(属性路由/约定路由)是否正确,是否存在全局路由前缀导致路径不匹配。 - 查看.NET Core服务的日志,确认是否收到WSO2转发的请求:
- 没收到:说明WSO2的请求未到达后端,检查网络、防火墙、后端服务地址配置。
- 收到但返回404:说明路径匹配错误,核对路由注解与请求路径。
- 确认.NET Core服务绑定的端口是否允许WSO2服务器访问,防火墙是否开放对应端口。
4. 排查WSO2的请求头与认证配置
- 检查WSO2是否添加了后端服务不兼容的请求头,比如跨域相关头、无效认证头,导致服务拒绝处理。
- 若后端服务需要认证,确认WSO2是否配置了正确的认证信息(API密钥、OAuth令牌等),并在转发请求时携带了这些信息。
内容的提问来源于stack exchange,提问作者Nahid
相关产品推荐
相关产品推荐

