升级ServiceStack 6后原有/api路径服务报错如何解决?
问题根因
ServiceStack 6 内置了PredefinedRoutesFeature插件,默认配置了/api/{Operation}规则作为自动API路由。所有以/api开头的请求会优先被该规则拦截,将路径最后一段解析为服务操作名匹配,不会进入你自定义的/api前缀路由匹配逻辑,因此会返回操作不存在的错误,非/api前缀的自定义路由不受该规则影响,可以正常运行。
修复方案
不需要批量修改现有路由配置,只需要在自托管应用的AppHost.Configure方法中,调整默认预定义路由规则即可,两种方案按需选择:
- 完全禁用默认的
/api自动路由规则,彻底释放/api路径给自定义路由使用,添加如下配置代码:
ConfigurePlugin<PredefinedRoutesFeature>(feature => { feature.JsonApiRoute = null; });
- 如果你需要保留内置自动路由能力,可将默认路由前缀修改为其他不与现有路由冲突的路径,例如修改为
/autoapi:
ConfigurePlugin<PredefinedRoutesFeature>(feature => { feature.JsonApiRoute = "/autoapi/{Operation}"; });
配置完成后重启应用,原有所有以/api为前缀的自定义路由即可恢复正常响应,不需要修改任何已发布接口的路由定义。
内容的提问来源于stack exchange,提问作者SAJ14SAJ
相关产品推荐
相关产品推荐

