【问题标题】:WebApi2 - UrlEncoded uri as uri segment / controller action parameterWeb Api 2 - UrlEncoded url 作为 uri 段/控制器操作参数
【发布时间】:2016-12-20 04:03:44
【问题描述】:

我需要将 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。

这不应该是一个问题,但也许我在叫错树?

【问题讨论】:

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


    【解决方案1】:

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

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

    双斜线在这里造成了问题。这是不可用的,你得到了 404。你应该把它改成

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

    【讨论】:

    • 我不认为这是问题所在,那将是一个错字。此外,参数不应未编码,或者无论如何,webapi 应该将/method/ 之后的所有内容视为{theuri},无论它是否已编码。至少,这是愿望。
    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多