使用身份从 Web Api 2 中的数据库中删除用户

Delete user from database in Web Api 2 using Identity

标题说的是什么。我尝试了几种方法,但其中 none 有效。如果有人有时间,我将非常感谢您的帮助。

我的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 (Internal Server Error)

我访问了这些链接,但可以找到答案。帮助任何人?

Delete User - WEB API

Delete User MVC 5

Delete User MVC 5 - another likn

您可以将附加条目的状态设置为已删除:

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

感谢 "Dot Net Dev" 我学会了使用 try-catch 块。我的内部异常提示我还需要删除与用户 table 的外键连接的另一个 table。所以这就是我最终做的事情:

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();

}