【问题标题】:How to match web api 2 route with forward slashes in request parameters?如何将 web api 2 路由与请求参数中的正斜杠匹配?
【发布时间】:2013-11-30 19:16:06
【问题描述】:

我正在使用 Web API 2 属性路由,但我有一个未正确解析的请求。

[Route("~/foo/{bar?}")]
public void Get(string bar);

我的请求是这样的:mydomain.me/foo/abc/def

我希望将 bar 接收为“abc/def”,但正斜杠会破坏路由匹配。 将正斜杠替换为“%2F”并不能解决问题。

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    您可以使用基于通配符的匹配,如下所示:

    [Route("~/foo/{*bar}")]
    public string Get(string bar)
    

    【讨论】:

    • 请注意:将其称为“基于通配符的匹配”听起来像是一种完全不同的匹配方式。它不是。它实际上只是在路线的末尾添加一个参数,以星号开头,也可以匹配正斜杠。
    • 在使用这种方法时还需要考虑的是,如果路由只有一个参数,其值可以包含“/”,则适合,并且该参数应位于路由的末尾。但是如果有多个参数的值可能包含“/”,或者如果不能将单个参数放在路由/url的最后,那么它也将不起作用/适合。
    • 很适合我
    猜你喜欢
    • 2017-10-23
    • 2019-11-25
    • 2020-05-29
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多