Quantcast
Channel: Security
Viewing all articles
Browse latest Browse all 4737

NullReferenceException in UserManager.Find()

$
0
0

I'm getting a mysterious NullReferenceException whenever I call UserManger.Find().

Stack trace:

   at Microsoft.AspNet.Identity.TaskExtensions.CultureAwaiter`1.get_IsCompleted()
   at Microsoft.AspNet.Identity.UserManager`2.<FindAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.AspNet.Identity.AsyncHelper.RunSync[TResult](Func`1 func)
   at Microsoft.AspNet.Identity.UserManagerExtensions.Find[TUser,TKey](UserManager`2 manager, String userName, String password)
   at HackersDiet3.Login.btnLogin_Click(Object sender, EventArgs e) in c:\Users\bfarris\Documents\Visual Studio 2013\Projects\HackersDiet3\HackersDiet3\Login.aspx.cs:line 28
   at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Here's my UserStore.FindByNameAsync() method, which I can see is successfully finding and returning the user:

 public System.Threading.Tasks.Task<ApplicationUser> FindByNameAsync(string userName)
        {
            var q = new HackersDiet3.DirectQuery("select id, username, password from users where username = @username", System.Data.CommandType.Text);
            q.Parameters.Add(new HackersDiet3.DirectQueryParameter("@username", userName, System.Data.DbType.String));

            using (var r = q.ExecuteReader())
            {
                if (r.Reader.Read() == false)
                    return System.Threading.Tasks.Task.FromResult<ApplicationUser>(null);

                ApplicationUser user = new ApplicationUser();
                user.Id = r.Reader.GetGuid(0).ToString();
                user.UserName = r.Reader.GetString(1);
                user.PasswordHash = new byte[49];
                r.Reader.GetBytes(2, 0, user.PasswordHash, 0, 49);

                return System.Threading.Tasks.Task.FromResult<ApplicationUser>(user);
            }
        }

Am I doing something obviously wrong?


Viewing all articles
Browse latest Browse all 4737

Trending Articles