Search code examples
asp.netasp.net-mvc-5asp.net-identity-2

ASP.Net Identity. UserManager.CreateAsync Throws Error: Value cannot be null. Parameter name: request


I am trying to create a user by calling register function within the application.

This function works fine when the function is called as a API.

When Called from Inside the application it throws an error

        AccountController ac = new AccountController();
        RegisterBindingModel rbm = new RegisterBindingModel();
        rbm.Email = UserAccountBase.Email; 
        rbm.Password = "TestPassword";
        rbm.ConfirmPassword = "TestPassword";

        var userId = await ac.Register(rbm);



 // POST api/Account/Register
    [AllowAnonymous]
    [Route("Register")]
    [ApiExplorerSettings(IgnoreApi = true)]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
        try
        {
            var result = await UserManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return GetErrorResult(result);
            }
        }
        catch(Exception e) {
            var message = e.Message;
        }

        return Ok(user.Id);
    }

UserManager.CreateAsync Throws an error

Value cannot be null. Parameter name: request


Solution

  • Did you build this using ASP Identity 2.0 and EF Code First? If so, check to see if your initial DB configuration put a column called 'Discriminator' at the end of AspNetUsers. If this is the case, recreate an initial migration and remove that column that gets generated. Once removed, you can perform an update-database. Does this make any sense? I just had this happen to me.