ASP.NET Identity 2.1将PK更改为int错误

时间:2015-01-04 18:54:03

标签: c# asp.net-identity

我已按照http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity中的说明更改了PK,但是在我尝试登录后,我收到以下错误。登录部分成功,因为"这个"包含所有合法数据,但创建标识似乎失败

来自物化' System.String'的指定演员表。输入' System.Int32'类型无效。

var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

方法

 public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }
    public string FirstName { get; set; }
    public string LastName { get; set; }

}

3 个答案:

答案 0 :(得分:4)

我也有同样的问题..唯一的区别是我的错误发生在AddToRoleAddToRoleAsync期间。

  

来自物化&#39; System.String&#39;的指定演员表。输入&#39; System.Int32&#39;类型无效。

违规行位于:await UserManager.AddToRoleAsync(user.Id, model.RoleId);

事实证明,我需要更改表AspNetRoles的密钥......也许这张图片更清晰......

enter image description here

答案 1 :(得分:3)

清除您的Cookie。您可能在更改PK之前运行了应用程序,现在尝试使用cookie中的其他“密钥类型”登录。

答案 2 :(得分:0)

根据您的来源,我假设您正在使用ApplicationUserManager来管理所有配置。使用ApplicationUserManager而不是UserManager,如下所示。在owin startUp中使用GenerateUserIdentityAsync方法的原因。

使用ApplicationUserManager而不是UserManager。

        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }

希望这有帮助。