如何使用+作为asp.net web Api参数传递电子邮件

时间:2013-11-11 12:16:27

标签: asp.net rest web

我如何通过" name + first@domain.com"作为asp.net web api方法的参数?加号自动替换为空格("名称为first@domain.com")

ASP.net 4.5

由于

3 个答案:

答案 0 :(得分:4)

在调用方法之前使用HttpUtility.UrlEncode("name+first@domain.com")。 并且HttpUtility.UrlDecode在必要时解码字符串。

<强>更新 要从javascript调用web api方法并转义+,那么您可以使用:encodeURIComponent("name+first@domain.com")

解码使用System.Uri.UnescapeDataString(escapedParameter);

答案 1 :(得分:0)

试试这样。

更改api方法的URI。

[Route("RegisterUser?email={email}")]

现在相应地更改方法的url。 调用方法的新网址为http://api/name_Controler/RegisterUser?email=escape('name+first@domain.com')

答案 2 :(得分:0)

当然你正在编码网址吗?我有类似的情况,这个问题是间歇性的。任何其他角色都可以使用HttpUtility.UrlEncode处理(&#34;!&amp; ^((&#34;);

但是+(加号)并不适合那里,正如我所说的那样有时会发生。所以我决定切换到GetQueryNameValuePairs

var queryParams = this.Request.GetQueryNameValuePairs().ToList();
var userId = queryParams.Single(q => q.Key.ToLower() == "userid").Value;
var password = queryParams.Single(q => q.Key.ToLower() == "password").Value;

你仍然需要编码