我有两个Web应用程序,WCF和MVC共享相同的数据库。我正在使用asp.net Identity 2.0
在注册新用户时,它创建确认令牌并向用户发送电子邮件。创建令牌,发送电子邮件主要在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));
我正在使用相同的数据保护提供商
在WCFvar 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电子邮件确认WCF和MVC令牌工作
现在是我的问题
在本地主机和qa中工作良好。
生产失败(使用SSL)。从WCF生成令牌并在MVC中验证失败
- 在同一个应用程序中生成和验证。
这个invalid token
错误是如何发生的?这和web.config
有关系吗?
找到问题了
是IIS中的应用程序池。我为WCF和MVC应用程序使用不同的应用程序池。现在我将它放在同一个应用程序池中,并且工作正常。
附加信息:对于那些有同样的问题,我的解决方案不能解决问题,那么你可能要尝试machineKey
。
p。我几乎总能在stackoverflow上找到答案。谢谢你。