Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UserManager Keeps throwing a System.ArgumentNullException

I am trying to implemented the standard Id in AspNetUsers from nvarchar to int. I've manage to get that side working. However my issue is when I try to login I keep getting an error from the UserManager class.

My code is below:

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

And on the login page I've got

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;
            }
        }

The error I keep getting is System.ArgumentNullException: Value cannot be null. Parameter name: manager. Has anyone else come across this issue? Thanks in advance for your help

Stack Trace

[ArgumentNullException: Value cannot be null.
Parameter name: manager]
Microsoft.AspNet.Identity.UserManagerExtensions.Find(UserManager`2 manager, String userName, String password) +221
Account_Login.LogIn(Object sender, EventArgs e) in Login.aspx.cs:17
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628026
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.<ProcessRequestMainAsync>d__14.MoveNext() +5226
like image 953
Izzy Avatar asked Nov 21 '14 11:11

Izzy


2 Answers

Make sure that UserManager is registered in you OWIN context. You should have something like this in your Startup class:

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

Also ensure that you have [assembly: OwinStartup(typeof(YourNamespace.Startup))] attribute applied to your web assembly.

like image 95
Sergey Kolodiy Avatar answered Oct 29 '22 15:10

Sergey Kolodiy


the manager.Find() method only search in primary key of table, you must use something like :

Context db = new Context();
if (db.Users.Select(u => u).Where(u => u.Username == Username && u.Pass == Password).ToList().Count() == 1)
{
      // login
}
like image 41
xwpedram Avatar answered Oct 29 '22 15:10

xwpedram