ASP.NET身份生成eNemailConfirmationTokenAsync失败



我正在研究一个MVC项目,以将身份信息与启动MVC项目分开。执行行

时用户注册
UserManager.GenerateEmailConfirmationTokenAsync(userId)

它将抛出系统。

如果指定了目的列表,则该列表不能包含一个仅由Whitespace字符组成的空条目或条目。 参数名称:目的

堆栈跟踪

at System.Web.Security.MachineKey.Protect(Byte[] userData, String[] purposes)
   at Microsoft.Owin.Host.SystemWeb.DataProtection.MachineKeyDataProtector.Protect(Byte[] userData)
   at Microsoft.Owin.Security.DataProtection.AppBuilderExtensions.CallDataProtectionProvider.CallDataProtection.Protect(Byte[] userData)
   at Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider`2.<GenerateAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNet.Identity.UserManager`2.<GenerateUserTokenAsync>d__fe.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Robot.ACG.Web.Controllers.AccountController.<Register>d__15.MoveNext() in...

有什么想法?

GenerateEmailConfirmationTokenAsync生成一个令牌。问题可能来自您的不同服务器:

如果您的令牌是在一台服务器上生成的,然后尝试在另一台服务器上验证它。原因是令牌可以通过MachineKey.protect保护。在OWIN初始化中配置了。

来自TrailMax Tech的Max Vasilyev。

我认为您的问题是您不应该通过ID,而是用户,至少在使用ASP.NET Core时:

UserManager.GenerateEmailConfirmationTokenAsync(user)

相关内容

  • 没有找到相关文章