2015-06-03 52 views
1

我有两个Web应用程序,WCF和MVC共享相同的数据库。我正在使用Aspnet身份识别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也测试过。

  2. 生产失败(使用SSL)。从WCF生成令牌并在MVC中验证失败。

  3. 在同一应用程序中生成和验证作品。

这是怎么发生的invalid token错误?与web.config有什么关系?

回答

2

发现问题。

这是IIS中的应用程序池。我为WCF和MVC应用程序使用了不同的应用程序池。现在我把它放在相同的应用程序池,并工作正常。

附加信息:对于那些有同样的问题和我的解决方案不能解决问题,那么你可能想尝试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

相关问题