Asp.net web api 如何将web api 2路由与请求参数中的正向斜杠匹配?
我正在使用WebAPI2属性路由,我有一个未正确解决的请求Asp.net web api 如何将web api 2路由与请求参数中的正向斜杠匹配?,asp.net-web-api,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api Routing,我正在使用WebAPI2属性路由,我有一个未正确解决的请求 [Route("~/foo/{bar?}")] public void Get(string bar); 我的请求类似于:mydomain.me/foo/abc/def 我希望以“abc/def”的形式接收bar,但正斜杠会扰乱路线匹配。 将正斜杠替换为“%2F”并不能解决问题。您可以使用基于通配符的匹配,如下所示: [Route("~/foo/{*bar}")] public string Get(string bar) 请注意:
[Route("~/foo/{bar?}")]
public void Get(string bar);
我的请求类似于:mydomain.me/foo/abc/def
我希望以“abc/def”的形式接收bar,但正斜杠会扰乱路线匹配。
将正斜杠替换为“%2F”并不能解决问题。您可以使用基于通配符的匹配,如下所示:
[Route("~/foo/{*bar}")]
public string Get(string bar)
请注意:称之为“基于通配符的匹配”听起来像是一种完全不同的匹配方式。不是。实际上,这只是在路由的末尾添加一个参数,从一个星形开始,以匹配正向斜线。使用这种方法时需要考虑的另一点是,如果路由只有一个参数,其值可以包含“/”,则该参数将适用于路由的末尾。但是,如果有多个参数的值中有“/”的概率,或者如果不能放在route/url的最后一个参数中,那么它也不起作用