1

如何将“name+first@domain.com”作为参数传递给 asp.net web api 方法?加号自动替换为空格(“name first@domain.com”)

ASP.NET 4.5

谢谢

4

3 回答 3

4

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

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

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

于 2013-11-11T12:29:37.223 回答
0

像这样试试。

更改您的 api 方法的 URI。

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

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

于 2013-11-11T12:31:17.540 回答
0

当然,您正在对 URL 进行编码,对吗?我有类似的情况,这个问题是间歇性的。任何其他字符都可以使用 HttpUtility.UrlEncode("!& ~ ^((");

但是+(加号)不适合那里,正如我所说的那样有时会发生。所以我决定改用 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;

你仍然需要编码

于 2014-12-15T05:21:26.940 回答