WebApi2 - UrlEncoded uri as uri segment / controller action parameter

时间:2016-12-20 04:03:44

标签: c# asp.net-web-api2 asp.net-web-api-routing

我需要将uri作为路径参数传递给webapi操作方法:

http://some.url/api/controller/method/%2FforeignRoute%2F7e12cd15-d49d-4b16-9fe5-94b5f3ea3ecd%2Fhello%2Fworld%2FsomeResourceId

..将映射到属性路由定义:

Route("api/controller/method/{theuri}")

..但最后一段始终被解码,asp.net / webapi返回404。

这不应该是一个问题,但也许我会咆哮错误的树?

1 个答案:

答案 0 :(得分:0)

%2F的网址编码值是正斜杠/,因此您的uri变为

http://some.url/api/controller/method//foreignRoute/7e12cd15-d49d-4b16-9fe5-94b5f3ea3ecd/hello/world/someResourceId
                                     ^^

双斜线在此处创建问题。这是不可用的,你得到404.你应该改为

Route("api/controller/method{theuri}")