Кодирование URL-параметров - PullRequest
1 голос
/ 29 сентября 2010

Я получил страницу, которая является страницей обратного вызова, когда пользователь перенаправляется на мою страницу, я хэширую параметры и проверяю, является ли она действительной. Моя проблема в том, что myParameter содержит такие символы, как å, ä и ö. Если я изменю myParameter на «то же значение с ääö» в контроллере, то он будет работать.

Я считаю, что это как-то связано с кодировками, и я рассмотрел несколько решений с преобразованием кодировки, но ни одно из них не решило мою проблему.

У вас есть какие-нибудь яркие идеи?

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

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

    return View();
}

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Я решил это, получив параметр из URL и расшифровав его сам.

Regex regex = new Regex(@"foo=(.*?)(&|\z)");
string myFooParameter = regex.Match(Request.RawUrl).Groups[1].Value;
myFooParameter = HttpUtility.UrlDecode(myFooParameter, Encoding.GetEncoding(28591));
0 голосов
/ 30 сентября 2010

Вы уверены, что проблема сейчас в вашей хэш-программе?

Можете ли вы вычислить хэш с проблемным значением вне MVC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...