Удалить пользователя из базы данных в Web Api 2, используя Identity - PullRequest
0 голосов
/ 27 октября 2018

Что говорит заголовок.Я попробовал несколько методов, но ни один из них не работает.Если у кого-то есть время, я был бы очень признателен за вашу помощь.

Мой запрос Ajax:

$('#deleteUserBtn').click(function () {

    $.ajax({
        url: 'Profile/DeleteUser',
        method: 'DELETE',
        headers: {
        'Authorization': 'Bearer '
            + sessionStorage.getItem("accessToken")
        },
        success: function (data) {
            sessionStorage.removeItem('accessToken');
            window.location.href = "../Login.html";
        },
        error: function (jQXHR) {
        }
    });
});

Контроллер не работает, но он даст вам представление о том, что я пытаюсь сделать.

Контроллер:

[RoutePrefix("Personal_Project/Main_Page_Personal_Project")]
[Route("Profile/DeleteUser")]
[HttpDelete]
[Authorize]
public void DeleteUser()
{

   string userId = User.Identity.GetUserId();
   ApplicationUser LoggedUser = db.Users.Find(userId);

   db.Users.Remove(LoggedUser);
   db.SaveChanges();

}

Я получаю эту ошибку в консоли просмотра:

jquery-3.3.1.min.js: 2 DELETE http://localhost:50370/Personal_Project/Main_Page_Personal_Project/Profile/DeleteUser 500 (Внутренняя ошибка сервера)

Я посетил эти ссылки, но не смог найти ответ.Помогите кому-нибудь?

Удалить пользователя - WEB API

Удалить пользователя MVC 5

Удалить пользователя MVC 5 -другой ликн

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Благодаря «Dot Net Dev» я научился использовать блок try-catch.Мое внутреннее исключение подсказало, что мне также нужно удалить другую таблицу, связанную с внешним ключом, с таблицей Users.Вот что я в итоге сделал:

public void DeleteUser()
{
     string userId = User.Identity.GetUserId();
     ApplicationUser LoggedUser = db.Users.Find(userId);

     db.Users.Remove(LoggedUser);

     AdditionalInfo info = db.AdditionalInfo.Find(userId); // Added this
     db.AdditionalInfo.Remove(info); // Added this

     db.SaveChanges();

}
0 голосов
/ 31 октября 2018

Вы можете установить состояние прикрепленной записи как удаленное:

string userId = _User.Identity.GetUserId();
ApplicationUser loggedUser = db.Users.Find(userId);
db.Entry(loggedUser ).State = EntityState.Deleted;
db.SaveChanges();
...