Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 如何将web api 2路由与请求参数中的正向斜杠匹配?_Asp.net Web Api_Asp.net Web Api Routing - Fatal编程技术网

Asp.net web api 如何将web api 2路由与请求参数中的正向斜杠匹配?

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) 请注意:

我正在使用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/url的最后一个参数中,那么它也不起作用