我已按照说明here扩展asp.net标识,以便为用户ID使用int而不是字符串,因为我正在向现有数据库添加标识。
然而,当我尝试登录时,我收到错误: 'IdentityRole`2'上的'Id'属性无法设置为'System.String'值。您必须将此属性设置为类型为“System.Int32”的非空值。
这个发生在这个课程中:
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
public Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager)
{
return Task.FromResult(GenerateUserIdentity(manager));
}
public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = manager.CreateIdentity<ApplicationUser, int>(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
就行了
var userIdentity = manager.CreateIdentity<ApplicationUser, int>(this, DefaultAuthenticationTypes.ApplicationCookie);
答案 0 :(得分:0)
如果你遇到类似的问题,那就是数据库与模型不同步,所以我需要在这种情况下将AspNetRoles(和AspNetUserRoles)中的RoleId更改为int。