title: Identity 2.1 - UserId not found but was working before
body: <p>This code worked before numerous times but after adding in a couple new properties for a user in Identity 2.1 it has ceased to work suddenly. I am getting a UserId not found error, despite there being a value visible in the debugger for UserId. Anyone have an idea on why this has suddenly happened? It's very frustrating to see the least.</p>
  
  <p>Here's code:
  (Controller)</p>
  
  <pre><code> // POST: /Account/Register
      [HttpPost]
      [AllowAnonymous]
      [ValidateAntiForgeryToken]
      public async Task&lt;ActionResult&gt; Register(RegisterViewModel model)
      {
          model.BackgroundOnFile = false;
  
          if (ModelState.IsValid)
          {
              var userDetails = new ApplicationUser { UserName = model.Email, Title = model.Title, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, LEAID = model.LEAID, SchoolID = model.SchoolID, Address1 = model.Address1, Address2 = model.Address2, City = model.City, State = model.State, PostCode = model.PostCode, BackgroundOnFile = model.BackgroundOnFile, BoardStart = model.BoardStart, BoardEnd = model.BoardEnd, PhoneNumber = model.PhoneNumber };
              var result = await UserManager.CreateAsync(userDetails, model.Password);
  
  
              //Assign Role
              UserManager.AddToRole(userDetails.Id, "User");
  
              if (result.Succeeded)
              {
                  await SignInManager.SignInAsync(userDetails, isPersistent:false, rememberBrowser:false);
  
                  // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                  // Send an email with this link
                  // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                  // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                  // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking &lt;a href=\"" + callbackUrl + "\"&gt;here&lt;/a&gt;");
  
                  return RedirectToAction("Index", "Home");
              }
              AddErrors(result);
          }
  
          // If we got this far, something failed, redisplay form
          return View(model);
      }
  </code></pre>
  
  <p>And the Model:</p>
  
  <pre><code>public class ApplicationUser : IdentityUser
  {
  
      //Extra items required to register
      public string Title { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public int LEAID { get; set; }
      public int SchoolID { get; set; }
      public string Address1 { get; set; }
      public string Address2 { get; set; }
      public string City { get; set; }
      public string State { get; set; }
      //Post Code is a string to accomodate future possible Canadian style post codes
      public string PostCode { get; set; }
      public bool BackgroundOnFile { get; set; }
      public System.DateTime BoardStart { get; set; }
      public System.DateTime BoardEnd { get; set; }
      public string NominatedBy { get; set; }
  
  
      public async Task&lt;ClaimsIdentity&gt; GenerateUserIdentityAsync(UserManager&lt;ApplicationUser&gt; 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;
      }
  }
  </code></pre>
  
  <p>And the error:</p>
  
  <pre><code>UserId not found.
  
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
  
  Exception Details: System.InvalidOperationException: UserId not found.
  
  Source Error: 
  
  
  Line 168:                
  Line 169:                //Assign Role
  Line 170:                UserManager.AddToRole(userDetails.Id, "User");
  Line 171:
  Line 172:                if (result.Succeeded)
  
  Source File: h:\app\Controllers\AccountController.cs    Line: 170 
  
  Stack Trace: 
  
  
  [InvalidOperationException: UserId not found.]
     Microsoft.AspNet.Identity.&lt;AddToRoleAsync&gt;d__83.MoveNext() +871
     System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
     System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
     System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
     Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +409
     Microsoft.AspNet.Identity.UserManagerExtensions.AddToRole(UserManager`2 manager, TKey userId, String role) +260
     UCAP.Controllers.&lt;Register&gt;d__7.MoveNext() in h:\Laptop Transfer\Training Code\1\CSMapAlpha3\CSMapAlpha3\Controllers\AccountController.cs:170
     System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
     System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
     System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21
     System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +61
     System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114
     System.Web.Mvc.Async.&lt;&gt;c__DisplayClass37.&lt;BeginInvokeAsynchronousActionMethod&gt;b__36(IAsyncResult asyncResult) +66
     System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
     System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
     System.Web.Mvc.Async.AsyncInvocationWithFilters.&lt;InvokeActionMethodFilterAsynchronouslyRecursive&gt;b__3d() +117
     System.Web.Mvc.Async.&lt;&gt;c__DisplayClass46.&lt;InvokeActionMethodFilterAsynchronouslyRecursive&gt;b__3f() +323
     System.Web.Mvc.Async.&lt;&gt;c__DisplayClass33.&lt;BeginInvokeActionMethodWithFilters&gt;b__32(IAsyncResult asyncResult) +44
     System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
     System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
     System.Web.Mvc.Async.&lt;&gt;c__DisplayClass2b.&lt;BeginInvokeAction&gt;b__1c() +72
     System.Web.Mvc.Async.&lt;&gt;c__DisplayClass21.&lt;BeginInvokeAction&gt;b__1e(IAsyncResult asyncResult) +185
     System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
     System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
     System.Web.Mvc.Controller.&lt;BeginExecuteCore&gt;b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
     System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
     System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
     System.Web.Mvc.Controller.&lt;BeginExecute&gt;b__15(IAsyncResult asyncResult, Controller controller) +39
     System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
     System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
     System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
     System.Web.Mvc.MvcHandler.&lt;BeginProcessRequest&gt;b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
     System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
     System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
     System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
     System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
     System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
     System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651688
     System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously) +155
  </code></pre>