Failed to remove user external login.

I am trying to create an MVC 5.2 template with a separate account. Everything works, except when I try to delete the user login, I get the following error message:

The operation failed: the relation cannot be changed because one or more properties of the foreign key are not NULL. When a change in relationship occurs, the corresponding property of the foreign key is set to zero. If the foreign key does not support null values, a new relationship must be defined, another nonzero value must be assigned to the foreign key property, or an object not associated with it must be deleted.

in the following line of the manager of management:

var result = await this.UserManager.RemoveLoginAsync(this.User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));

This is the full RemoveLogin action:

    [HttpPost]
    [Route("RemoveLogin")]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> RemoveLogin(string loginProvider, string providerKey)
    {
        ManageMessageId? message;
        var result = await this.UserManager.RemoveLoginAsync(this.User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
        if( result.Succeeded )
        {
            var user = await this.UserManager.FindByIdAsync(this.User.Identity.GetUserId());
            if( user != null )
                await this.SignInAsync(user, isPersistent: false);
            message = ManageMessageId.RemoveLoginSuccess;
        }
        else
            message = ManageMessageId.Error;

        return this.RedirectToAction("ManageLogins", new { Message = message });
    }
+4
1

, :

public async Task<IActionResult> RemoveLogin(
    string loginProvider, 
    string providerKey)

public async Task<IActionResult> RemoveLogin(
    [Bind(Prefix = "Account.LoginProvider")]string loginProvider,
    [Bind(Prefix = "Account.ProviderKey")]string providerKey)

:

- MVC :

<input asp-for="@account.LoginProvider" type="hidden" />
<input asp-for="@account.ProviderKey" type="hidden" />

:

<input type="hidden" id="account_LoginProvider" name="account.LoginProvider" value="Facebook">
<input type="hidden" id="account_ProviderKey" name="account.ProviderKey" value="...">

loginProvider providerKey.

, :

fooobar.com/questions/573845/...

0

All Articles