4

Я пытаюсь реализовать функцию сброса пароля. Я использую идентификатор ASP.NET.Ошибка HTTP 404.11 прохождение активации учетной записи Token by querystring

Я использую UserManager.GetConfirmationToken, который возвращает маркер, как это:

UW/cj4xUj08kiGCntnWs7z1eUcWlyfNczH5IZfvf0ScTi4L1jgdkkus/Zb5ROJOWb% 2b1XAVRSiBUvVGnESfEyauDDa4u% 2bPDUH6D/CIpwPcFYRvLi% 2b% 2bq6f% 2bRIhKHRTsGMV0y8lXpSZ5VqySWGSSaW9kofGage/IjW4HrvONeEtA4Szov3u7HgmqEUf0yzgivJ0

Затем я составить мой URL-адрес и отправить его по электронной почте зарегистрированному пользователю. URL для активации учетной записи, как это:

http://localhost:4322/Account/Confirm/UW/cj4xUj08kiGCntnWs7z1eUcWlyfNczH5IZfvf0ScTi4L1jgdkkus/Zb5ROJOWb%2b1XAVRSiBUvVGnESfEyauDDa4u%2bPDUH6D/CIpwPcFYRvLi%2b%2bq6f%2bRIhKHRTsGMV0y8lXpSZ5VqySWGSSaW9kofGage/IjW4HrvONeEtA4Szov3u7HgmqEUf0yzgivJ0 

Когда я нажимаю, эта ошибка:
Error HTTP 404.11 - Double escape sequence issue

+0

нашел способ решить эту проблему? Ответ, который вы приняли, не работает. –

+0

Я нашел ответ через 7 минут после того, как написал предыдущий комментарий. Пожалуйста, проверьте мой ответ –

ответ

0

Вам может понадобиться для кодирования URL с помощью httputility.urlencode

+0

'/' aint gonna be encoded – Sergio

+2

Помог ли вам этот ответ? В моем случае кажется, что MVC анализирует знак% 2b на знак +, а затем терпит неудачу. ex: hxxp: // adomain/test/ex% 2bample закодирован с помощью HttpUtility.UrlEncode или Uri.EscapeDataString (который отличается тем, что вместо этого записывает% 2B. Нет, похоже, работает с MVC5.1, IIS8.5 – Crypth

+0

Это не работает. Не могли бы вы улучшить свой ответ с некоторыми примерами? –

0

Вашего маркер содержит символы / которым в настоящее время анализируются как путь к некоторой странице сервера. Вы можете как-то закодировать его (возможно, base64) и использовать в качестве параметра строки запроса, например ...?token=.... Или изменить лексемы поколения, так он будет содержать только хороших символов

+0

Хорошо, но знаете ли вы, как изменить поколения токенов на членство Asp.NET MVC5? У меня есть поиск, но я ничего не нашел –

0

Убедитесь, что вы не двойными кодирующей маркер, так что вы можете сделать что-то вроде этого, чтобы отправить электронная почта:

   string code = await UserManager.GetConfirmationToken(user.Id); 
       var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
       await SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
+0

Это не сработало для меня. И токен, и результирующий URL-адрес по-прежнему содержат символ «/». Есть ли способ изменить генератор токенов в ASP.NET MVC5 членство? –

+0

Это тоже не работало для меня: маркер включает символы, которые необходимо кодировать для передачи по URL-адресу. – pwdst

1

Основная проблема здесь заключается в том, чтобы добавить код подтверждения в путь. Принимая во внимание, что он должен быть отправлен через querystring. Так оно и должно быть, как это

http://localhost:4322/Account/Confirm?code=UW/cj4xUj08kiGCntnWs7z1eUcWlyfNczH5IZfvf0ScTi4L1jgdkkus/Zb5ROJOWb%2b1XAVRSiBUvVGnESfEyauDDa4u%2bPDUH6D/CIpwPcFYRvLi%2b%2bq6f%2bRIhKHRTsGMV0y8lXpSZ5VqySWGSSaW9kofGage/IjW4HrvONeEtA4Szov3u7HgmqEUf0yzgivJ0 

Это позволит сэкономить день которого пытается решить эту проблему.

Я нашел ответ на этот комментарий: http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx?PageIndex=1#comments Благодаря Pranav rostgi

+0

Собственно, для меня значение после 'code =' должно было быть также уркокодировано. , ваш ответ помог мне! –

Смежные вопросы