C# 电子邮件确认错误无效令牌AspNet标识
我有两个Web应用程序,WCF和MVC,它们共享同一个数据库。我使用的是Aspnet Identity 2.0 注册新用户时,它会创建确认令牌并向用户发送电子邮件。创建令牌、发送电子邮件主要在WCF中完成,验证在MVC应用程序中完成C# 电子邮件确认错误无效令牌AspNet标识,c#,asp.net-mvc,wcf,asp.net-identity-2,confirmation-email,C#,Asp.net Mvc,Wcf,Asp.net Identity 2,Confirmation Email,我有两个Web应用程序,WCF和MVC,它们共享同一个数据库。我使用的是Aspnet Identity 2.0 注册新用户时,它会创建确认令牌并向用户发送电子邮件。创建令牌、发送电子邮件主要在WCF中完成,验证在MVC应用程序中完成 var code = UserManager.GenerateEmailConfirmationToken(user.Id); string.Format("{0}/Account/ConfirmEmail?userId={1}&code={2}", Web
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)
};
var provider=new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider(“MyTestApplication”);
UserManager.UserTokenProvider=
新的Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider
现在来解决我的问题
在本地主机和qa中工作良好。在本地主机的SSL上也测试正常
生产失败(使用SSL)。从WCF生成令牌并在MVC中验证失败
在相同的应用程序中生成和验证
这无效令牌错误是如何发生的?web.config
与此有关吗?发现问题
它是IIS中的应用程序池。我对WCF和MVC应用程序使用了不同的应用程序池。现在我将它放在同一个应用程序池中,工作正常
其他信息:对于存在相同问题且我的解决方案无法解决问题的用户,您可能需要尝试machineKey
另外,我几乎总是在我把答案贴在stackoverflow上后自己找到答案。谢谢。谢谢!HttpUtility.UrlEncode
为我完成了这项任务,已经配置了machineKey。对于其他关于machineKey的人来说,这也是一个很好的答案,帮助我生成:
var dataProtectionProvider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication");
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken"))
{
TokenLifespan = TimeSpan.FromDays(7)
};
}