Как избежать того, чтобы ASP.Net (или IIS?) Декодировал мой зашифрованный URL-код (в результате получился 404) вместо передачи его в сценарий утверждения? - PullRequest
1 голос
/ 23 февраля 2009

Я работаю над частью веб-приложения в ASP.Net MVC, где пользователь регистрируется для членства, используя поставщика членства sql. Когда они регистрируются, они помещаются в систему, но не утверждаются. Затем код отправляет пользователю электронное письмо с подтверждением с указанным адресом электронной почты.

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

Но когда пользователь нажимает на ссылку, он получает следующую ошибку:

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей) могло быть удалено, изменилось его имя или временно недоступно. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / Approve / k / 9IHrY43os =

Вопрос заключается в том, что если я кодирую ссылку перед тем, как отправить ее, почему она декодируется перед попыткой вызвать действие? URL в моем браузере на самом деле 'http://localhost:1091/Approve/k%2f9IHrY43os%3d', когда я получаю сообщение об ошибке. Моя маршрутизация настроена правильно, но она не учитывает лишние '/' в зашифрованной строке в URL (так как в любом случае ее там быть не должно).

1 Ответ

1 голос
/ 23 февраля 2009

Вы можете кодировать его как base64 вместо использования URLEncode.

...