扩展身份提供程序后 - 在manager.CreateIdentity中出错

时间:2015-06-11 14:24:27

标签: asp.net asp.net-mvc asp.net-identity

我已按照说明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);

1 个答案:

答案 0 :(得分:0)

如果你遇到类似的问题,那就是数据库与模型不同步,所以我需要在这种情况下将AspNetRoles(和AspNetUserRoles)中的RoleId更改为int。