I am implementing asp.net Identity. I have overridden the default classes with a `int` primary key rather than the default `String`. I followed the following article to do so: [Article](http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity)

Sorry for all the code, however I have been stuck on this silly error for some time now, so I have rather given more info than less.

I have the following classes:

```
public class FskUser : IdentityUser<int, FskUserLogin, FskUserRole, FskUserClaim>
{
    ...
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<FskUser, int> 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;
    }
}

```

My Custom SignInManager

```
  public class FskSignInManager : SignInManager<FskUser,int>
{
    public FskSignInManager(FskUserManager userManager, IAuthenticationManager authenticationManager)
        : base(userManager, authenticationManager)
    {
    }

    public override Task<ClaimsIdentity> CreateUserIdentityAsync(FskUser user)
    {
        return user.GenerateUserIdentityAsync((FskUserManager)UserManager);
    }

    public static FskSignInManager Create(IdentityFactoryOptions<FskSignInManager> options, IOwinContext context)
    {
        return new FskSignInManager(context.GetUserManager<FskUserManager>(), context.Authentication);
    }
}

```

My StartUp.Auth.cs

```
 public void ConfigureAuth(IAppBuilder app)
    {
        // Configure the db context, user manager and signin manager to use a single instance per request
        app.CreatePerOwinContext(IdentityDbContext.Create);
        app.CreatePerOwinContext<FskUserManager>(FskUserManager.Create);
        app.CreatePerOwinContext<FskSignInManager>(FskSignInManager.Create);

        // Enable the application to use a cookie to store information for the signed in user
        // and to use a cookie to temporarily store information about a user logging in with a third party login provider
        // Configure the sign in cookie
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<FskUserManager, FskUser, int>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentityCallback: (manager, user) =>
                user.GenerateUserIdentityAsync(manager),
            getUserIdCallback: (id) => (id.GetUserId<int>()))                   
            }
        });            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);       
           }

```

Here is my Account Controller simplified:

```
 [Authorize]
public class AccountController : Controller
{
    private FskSignInManager _signInManager;
    private FskUserManager _userManager;

    public AccountController()
    {
    }

    public AccountController(FskUserManager userManager, FskSignInManager signInManager)
    {
        UserManager = userManager;
        SignInManager = signInManager;
    }

    public FskSignInManager SignInManager
    {
        get
        {
            if (_signInManager == null)
            {
                //split for debug purposes
                var cntx = HttpContext.GetOwinContext();
                var tmp = cntx.Get<FskSignInManager>();
                return tmp;
            }
            else
            {
                return _signInManager;
            }
        }
        private set
        {
            _signInManager = value;
        }
    }

    public FskUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<FskUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        *** line below causes the error ***            
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }
 }

```

And this is the error message which I am getting when I try and login:

```
    Value cannot be null.
    Parameter name: value 
    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.ArgumentNullException: Value cannot be null.
Parameter name: value

    Source Error: 

    Line 80: 
    Line 81:             // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
    Line 82:             var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
    Line 83:             // Add custom user claims here
    Line 84:             return userIdentity;  

   Source File:  c:\Users\Dylan.AMECOR\Dropbox\Work\Code\FSK Networks Website\FSK.Domain.Repository\Services\Shared\Security\FskUser.cs    Line:  82 
    Stack Trace: 
    [ArgumentNullException: Value cannot be null.
    Parameter name: value]
     System.Security.Claims.Claim..ctor(String type, String value, String valueType, String issuer, String originalIssuer, ClaimsIdentity subject, String propertyKey, String propertyValue) +10798181
   System.Security.Claims.Claim..ctor(String type, String value) +34
   Microsoft.AspNet.Identity.<CreateAsync>d__0.MoveNext() +1447
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
   FSK.Domain.Services.Services.Shared.<GenerateUserIdentityAsync>d__0.MoveNext() in c:\Users\Dylan.AMECOR\Dropbox\Work\Code\FSK Networks Website\FSK.Domain.Repository\Services\Shared\Security\FskUser.cs:82
   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.CultureAwaiter`1.GetResult() +123
   Microsoft.AspNet.Identity.Owin.<SignInAsync>d__2.MoveNext() +408
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21
   Microsoft.AspNet.Identity.CultureAwaiter.GetResult() +63
   Microsoft.AspNet.Identity.Owin.<SignInOrTwoFactor>d__23.MoveNext() +1910
   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.CultureAwaiter`1.GetResult() +67
   Microsoft.AspNet.Identity.Owin.<PasswordSignInAsync>d__29.MoveNext() +2208
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93        System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
   FSK.WebSite.Web.Controllers.<Login>d__2.MoveNext() in c:\Users\Dylan.AMECOR\Dropbox\Work\Code\FSK Networks Website\FSK.WebSite.Web\Controllers\AccountController.cs:86
    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.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>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.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
    System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>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.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>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.<BeginExecuteCore>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.<BeginExecute>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.<BeginProcessRequest>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.OnAsyncHandlerCompletion(IAsyncResult ar) +129

```