我正在研究一个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)