c# - ApplicationSignInManager 类抛出无效的转换异常

标签 c# asp.net .net asp.net-mvc

这是取自 MVC5 帐户 Controller 类的代码(这是在您设置 asp.net 项目时作为模板创建的) 但是当我将以下参数传递给这行代码时

model.UserName="User1", model.password="Password1",model.RememberMe=false, shouldLockout=false

 var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); 

它抛出一个异常说

Unable to cast object of type 'System.Int32' to type 'System.String'.

我不明白的是为什么上面的代码行认为参数是 int 而所有的参数都是 字符串或 bool 值。

有人要帮忙吗?感谢您的提前。

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);   

    }

LoginViewModel 类的代码

public class LoginViewModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

最佳答案

在尝试为同一场景解决一个非常相似的错误(无法将类型为 system.guid 的对象转换为类型为 system.string)时,我将问题追溯到已用于两个键列的数据类型角色表(AspNetRoles 和 AspNetUserRoles)。这些必须是 nvarchar 类型,而不是 uniqueidentifier。

PasswordSignInAsync 背后的 SQL 查询从 AspNetUsers、AspNetUserRoles、AspNetUserClaims 和 AspNetUserLogins 收集数据,因此我建议您检查所有这些表中的键列类型是否与这些数据将映射到的预期实体相匹配。据我所知,这些应该如下:

AspNetUsers > [Id] NVARCHAR (128)

AspNetRoles > [Id] NVARCHAR (128)

AspNetUserRoles > [UserId] NVARCHAR (128), [RoleId] NVARCHAR (128)

AspNetUserClaims > [Id] INT

AspNetUserLogins > [UserId] NVARCHAR (128)

关于c# - ApplicationSignInManager 类抛出无效的转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27201321/

相关文章:

c# - [优化] : Slow LINQ to Objects Query

jquery - 使用 Bootstrap 表创建行/详细信息显示

asp.net - 搜索引擎优化 : How do sites like Yellow Pages get all their listings found by search engines

c# - 我可以指定要从哪个类调用虚拟方法吗?

c# - 将资源字典文件动态加载到 wpf 应用程序会出错

c# - 求解具有约束结果的最小二乘矩阵

C#串口通信协议(protocol)

c# - Wpf ListView 是否可以以不同于组标题的方式对组项目进行排序?

c# - Entity Framework 不显示数据库的最后更改

c# - C# 中的 json 序列化和反序列化