UserManager保持抛出System.ArgumentNullException

时间:2014-11-21 11:46:45

标签: c# asp.net entity-framework owin asp.net-identity-2

我正在尝试从IdAspNetUsers的{​​{1}}中实施标准nvarchar。我设法让那一方工作。但是我的问题是当我尝试登录时,我不断收到来自int类的错误。

我的代码如下:

UserManager

在登录页面上我已经

public class UserManager : UserManager<ApplicationUser, int>
{
    public UserManager(IUserStore<ApplicationUser, int> store) 
    : base(store) 
{ 
}

我一直遇到的错误是 System.ArgumentNullException:Value不能为null。 参数名称:manager 。还有其他人遇到过这个问题吗?在此先感谢您的帮助

堆栈跟踪

if (IsValid)
        {
            // Validate the user password
            var manager = Context.GetOwinContext().GetUserManager<UserManager>();
            var user = manager.Find(UserName.Text, Password.Text); //This line throws the error
            if (user != null)
            {
                IdentityHelper.SignIn(manager, user, isPersistent: false);
                Response.Redirect("~/Home.aspx");                }
            else
            {
                FailureText.Text = "Invalid username or password.";
                ErrorMessage.Visible = true;
            }
        }

2 个答案:

答案 0 :(得分:14)

确保在您的OWIN上下文中注册了UserManager。您应该在Startup班级中找到类似的内容:

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);

还要确保将[assembly: OwinStartup(typeof(YourNamespace.Startup))]属性应用于您的网络程序集。

答案 1 :(得分:2)

manager.Find()方法只搜索表的主键,你必须使用类似的东西:

Context db = new Context();
if (db.Users.Select(u => u).Where(u => u.Username == Username && u.Pass == Password).ToList().Count() == 1)
{
      // login
}