【发布时间】:2013-01-20 11:19:40
【问题描述】:
我在使用 ASP.NET Web API 路由时遇到问题。具体来说,我想在 Uri 中传递一个空的或包含斜杠的字符串参数。但不幸的是,这会破坏路由。
我已经设置了正确的路由,如果我有一个普通的字符串,例如“fubar”,它匹配得很好。我试图传递编码的字符串 url,但这不起作用。显然问题是一些 http sys 层已经在解码字符串,这意味着不是"fu%2fbar" 到达,而是"fo/bar" - 这导致了另一条路线。
另外,当我传递一个空字符串时,uri 是 "api//...",这两个 / 被合并,段被丢弃。
解决/ 内部问题的一种方法是对 Uri 进行双重编码并在我的方法中对其进行解码。但这似乎是一个非常非常糟糕的选择,所以我正在寻找其他方法来解决这个问题。
【问题讨论】:
-
将其设置为请求正文中接受的参数不是更有意义吗?
-
当我有一个字符串作为资源的主要标识符时,这样做是没有意义的。正文中不应包含可选的过滤器查询字符串。
标签: c# asp.net-web-api asp.net-web-api-routing