我正在开发一个MVC项目,用于将身份资料与启动MVC项目分开。在执行行
时进行用户注册UserManager.GenerateEmailConfirmationTokenAsync(userId)
它会抛出带有消息
的System.ArgumentException如果指定了目的列表,则列表不能包含仅由空格字符组成的空条目或条目。 参数名称:用途
堆栈跟踪
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...
任何想法?
答案 0 :(得分:1)
GenerateEmailConfirmationTokenAsync
生成令牌。问题可能来自您的不同服务器:
如果您的令牌是在一台服务器上生成的,然后尝试在另一台服务器上验证它。原因是令牌受MachineKey.Protect保护。这是在OWIN初始化时配置的。
答案 1 :(得分:0)
我认为你的问题是你不应该传递一个Id,而是一个用户,至少在你使用asp.net Core时:
UserManager.GenerateEmailConfirmationTokenAsync(user)