我有一个页面是一个回调页面,当用户被重定向到我的页面时,我散列参数并检查它是否有效。我的问题是当myParameter包含å,ä和ö等字符时。如果我在控制器中将myParameter更改为“与åäö相同的值”,则它可以正常工作。
我认为它与编码有关,我已经看了几个转换编码的解决方案,但没有一个解决了我的问题。
你有什么好主意吗?
public ActionResult MyCallback(string myParameter, string myMAC)
{
// This works...
myParameter = "same value with åäö";
if(Hash(myParameter + mySecrect).Equals(myMAC))
{
// Valid.
}
return View();
}
答案 0 :(得分:1)
我通过从URL获取参数并自行解码来解决它。
Regex regex = new Regex(@"foo=(.*?)(&|\z)");
string myFooParameter = regex.Match(Request.RawUrl).Groups[1].Value;
myFooParameter = HttpUtility.UrlDecode(myFooParameter, Encoding.GetEncoding(28591));
答案 1 :(得分:0)
你确定你的Hash例程现在出现了问题吗?
你能用MVC之外的问题值来计算Hash吗?