2016-12-20 2 views
0

У меня есть необходимость передать URI, как маршрут пары к способу WebAPI действия:WebApi2 - UrlEncoded URI в качестве параметра действия сегмента URI/контроллера

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

.. который отображался бы на путь атрибута определение:

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

.. но конечный сегмент всегда декодируется и asp.net/webapi возвращает 404.

Это не похоже, что это должна быть проблема, но, возможно, я лаяю неправильное дерево?

ответ

0

URL, закодированное значение %2F является прямой слэш / и, таким образом, ваш URI становится

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

двойной слеш создает проблему здесь. который недоступен, и вы получите 404. Вы должны изменить его на

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

Я не верю, что это проблема, это было бы опечаткой. Кроме того, параметр не должен получать unencoded или, в любом случае, webapi должен видеть все после '/ method /' как '{theuri}' независимо от того, закодирован он или нет. По крайней мере, это желание. – JoeBrockhaus

Смежные вопросы