如何将“name+first@domain.com”作为参数传递给 asp.net web api 方法?加号自动替换为空格(“name first@domain.com”)
ASP.NET 4.5
谢谢
HttpUtility.UrlEncode("name+first@domain.com")
在调用方法之前使用。并HttpUtility.UrlDecode
在必要时对字符串进行解码。
更新
要从 javascript 调用 web api 方法并转义 +,那么您可以使用:encodeURIComponent("name+first@domain.com")
解码使用System.Uri.UnescapeDataString(escapedParameter);
像这样试试。
更改您的 api 方法的 URI。
[Route("RegisterUser?email={email}")]
现在相应地更改方法的 url。调用方法的新 URL 将是http://api/name_Controler/RegisterUser?email=escape('name+first@domain.com')
当然,您正在对 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;
你仍然需要编码