ASP.NET Web API解码中的参数绑定+(%2B)为空格

时间:2018-04-13 15:30:21

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

在ASP.NET Web API的控制器中给出以下方法:

[HttpGet]
[ApiRoute("resource/{id}/end-point)]
public IHttpActionResult MethodName (int id, string clientTimeZone)
{
     ...
}

每当我向http://localhost:5684/api/v1/resource/1/end-point?client_timezone=%2B0500提交GET请求时,clientTimezone都会以%2B0500的形式传递给clientTimeZone,并解析编码的' +'签到一个空格字符。为什么ASP.NET无法解析URI?

在标题中我有" ContentType = application / json"和持有人令牌

我想要获得" + 0500"进入我的方法,但它变成" 0500"

1 个答案:

答案 0 :(得分:2)

您在使用api时是否使用Content-Type application/x-www-form-urlencoded?这将对待' +'在您的网址中使用时字符作为空格。

此处有更多详情: When to encode space to plus (+) or %20?

尝试将Content-Type更改为application/json,然后查看参数绑定是否符合预期。