2015-06-03 2 views
1

У меня есть два веб-приложения, WCF и MVC, которые используют одну и ту же базу данных. Я использую Aspnet Identity 2.0Ошибка подтверждения электронной почты Недействительный токен Идентификатор AspNet

При регистрации нового пользователя он создает токен подтверждения и отправляет электронное письмо пользователю. Создание токена, отправка электронной почты в основном выполняется в WCF, проверка выполняется в приложении MVC.

var code = UserManager.GenerateEmailConfirmationToken(user.Id); 
string.Format("{0}/Account/ConfirmEmail?userId={1}&code={2}", WebsiteUrl, 
    HttpUtility.UrlEncode(user.Id), HttpUtility.UrlEncode(codeId)); 

Я использую же защиты данных поставщика

В WCF

var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication"); 
UserManager.UserTokenProvider = 
       new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(
        provider.Create("UserToken")) 
       { 
        TokenLifespan = TimeSpan.FromDays(7) 
       }; 

В MVC

var dataProtectionProvider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication"); 
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken")) 
       { 
        TokenLifespan = TimeSpan.FromDays(7) 
       }; 
      } 

Источник: Make ASP.NET Identity 2.0 Email confirm token work for WCF and MVC

Теперь к моей проблеме

  1. отлично работает в локальный и ца. Протестировано нормально для SSL в localhost.

  2. Сбой при производстве (используется SSL). Генерирование токена из WCF и проверка в MVC завершается с ошибкой.

  3. Создание и проверка в тех же прикладных работах.

Как это invalid token ошибка возникает? Имеет web.config что-то общее?

ответ

2

Обнаружена проблема.

Это пулы приложений в IIS. Я использовал другой пул приложений для приложений WCF и MVC. Теперь i поместил его в тот же пул приложений и работает отлично.

Дополнительная информация: Для тех, у кого такая проблема, и мое решение не устраняет проблему, тогда вы можете попробовать machineKey.

http://gunaatita.com/blog/Invalid-Token-Error-on-Email-Confirmation-in-Aspnet-Identity/1056

PS. Я почти всегда нахожу ответ самостоятельно после того, как я разместил его в stackoverflow. Спасибо.

+1

Спасибо! «HttpUtility.UrlEncode» сделал трюк для меня, уже настроенный machineKey. Для других о machineKey это также хороший ответ, который помог мне создать: http://stackoverflow.com/questions/23455579/generating-reset-password-token-does-not-work-in-azure-website/23661872 # 23661872 – CularBytes

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

  • Нет связанных вопросов^_^