在将ASP.NET Core Identity更改为使用int
而不是GUID之后(按照this blog post),我收到以下错误:
ArgumentException:395438ed-1cd9-4420-8a58-3f3b1f550bfc无效
Int32的值。参数名称:值
System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext
上下文,CultureInfo文化,对象值)
Microsoft.AspNetCore.Identity.UserStoreBase.ConvertIdFromString(字符串ID)
Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore.FindByIdAsync(string userId,CancellationToken
cancelToken)
Microsoft.AspNetCore.Identity.UserManager.FindByIdAsync(string
用户身份)
Microsoft.AspNetCore.Identity.UserManager.GetUserAsync(ClaimsPrincipal
主要)
Microsoft.AspNetCore.Identity.SignInManager.ValidateSecurityStampAsync(ClaimsPrincipal
主要)
Microsoft.AspNetCore.Identity.SecurityStampValidator.ValidateAsync(CookieValidatePrincipalContext
上下文)
Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleAuthenticateAsync()
Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticateAsync()
Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext
上下文,字符串方案)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext
上下文)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext
上下文)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext
上下文)
尝试查询数据库时。关于这可能是什么的任何线索?
最佳答案
根据博客文章中的comments之一:
谢谢,这篇文章真的很有用。对我来说一个陷阱是
当我再次加载身份服务器时,交换使用int后
我在这条线上有一个错误
Microsoft.AspNetCore.Identity.UserStoreBase.ConvertIdFromString(字符串ID)。
原来我有一个使用旧guid格式的cookie,简单的解决方法是
清除Cookies。
问题在于,您以前的某些登录可能是在ID为GUID时完成的。您将其更改为int
,因此现在它不再知道如何处理GUID。最简单的解决方案是删除cookie,有效地注销您并强迫您再次登录(改用int
)。
关于c# - 输入字符串的格式不正确-使用了错误的上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58340938/