【问题标题】:Servicestack FallbackRoute not recognizing trailing slashServicestack FallbackRoute 无法识别斜杠
【发布时间】:2017-05-23 22:27:23
【问题描述】:

因此,我的代码中的 ServiceStack FallbackRoute 是 [FallbackRoute("/{Path*}/")],这是 ServiceStack 文档中所说的将处理每个不匹配的路由的设置。

如果给定一个类似 example.com/api 的路由,那么它将正确触发回退响应。

但是,如果给定 example.com/api/ 那么它只会返回一个空的 200 OK 响应。

它确实正确处理斜线后内容不匹配的路由,因此 example.com/api/arglkjadkf 将被发送到后备

我希望 Servicestack 能够在基本路径之后获取带有斜杠的 url,并让它命中后备路由。

【问题讨论】:

  • 不是一个真正的答案,因为我从来没有弄清楚是什么导致 ServiceStack 没有用斜杠捕获路由,但我最终通过硬编码 api/ 的 MVC 路由来解决这个问题,并将 ServiceStack 留给处理其他不匹配的api路由。

标签: c# asp.net http servicestack


【解决方案1】:

ServiceStack 不会将尾部斜杠区分为不同的路由,即:

[Route("/api")]

同时处理/api/api/

所以在你的路由定义中不应该有斜杠,因为你使用的是通配符路径,即:

[FallbackRoute("/{PathInfo*}")]
public class FallbackForUnmatchedRoutes
{
    public string PathInfo { get; set; }
}

这将处理尚未处理的任何深度的任何路线。

【讨论】:

  • 这实际上是我最初的设置,我尝试了带有斜杠的后备路由以查看会发生什么,但在粘贴到 stackoverflow 问题时忘记将其删除。不幸的是,任何一种方式都不会影响 /api/ 的行为。我现在想知道是否存在来自处理应用程序不同部分的 MVC 路由的干扰,但我不知道是什么。我没有看到任何应该干扰 ServiceStack 路线的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 2020-06-04
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
相关资源
最近更新 更多