2010-09-29 79 views
1

我得到了一個頁面,它是一個回調頁面,當用戶被重定向到我的頁面時,我散列這些參數並檢查它是否有效。我的問題是當myParameter包含像å,ä和ö這樣的字符時。如果我在控制器中將myParameter更改爲「與åäö相同的值」,那麼它就可以工作。URL參數的編碼

我相信它與編碼有關,我已經看過編碼轉換的幾種解決方案,但沒有一個解決了我的問題。

你有什麼好主意嗎?

public ActionResult MyCallback(string myParameter, string myMAC) 
{ 
    // This works... 
    myParameter = "same value with åäö"; 

    if(Hash(myParameter + mySecrect).Equals(myMAC)) 
    { 
     // Valid. 
    } 

    return View(); 
} 

回答

1

我通過從URL獲取參數並自己解碼來解決它。

Regex regex = new Regex(@"foo=(.*?)(&|\z)"); 
string myFooParameter = regex.Match(Request.RawUrl).Groups[1].Value; 
myFooParameter = HttpUtility.UrlDecode(myFooParameter, Encoding.GetEncoding(28591)); 
0

你確定問題現在與你的哈希例程?

你可以用MVC以外的問題值計算哈希值嗎?