在将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/

10-10 11:10