gpt4 book ai didi

c# - Membership.DeleteUser 没有删除用户的所有相关行

转载 作者:行者123 更新时间:2023-11-30 13:47:48 33 4
gpt4 key购买 nike

Membership.DeleteUser() 设法删除我要删除的用户的用户配置文件。为什么它不同时删除存储在 webpages_membership 中的信息。

我目前没有使用角色,所以请记住这一点以供您回答。

最佳答案

我进行了测试并验证了 SimpleMembershipProvider.DeleteUser不像宣传的那样工作。根据文档:

This method deletes the entry in the membership account table (by default, webpages_Membership). If deleteAllRelatedData is true, all user data that is stored in the user table is also deleted.

但在我的测试中,我将 deleteAllRelatedData 设置为 true,它只是删除了 UserProfile 表中的条目,而 webpages_membership 中的条目未被修改.文档中的错误或 SimpleMembership 的实现中的错误。

但我确实找到了解决方法。先拨SimpleMembershipProvider.DeleteAccount .这将删除 webpages_membership 表中的条目。然后调用 SimpleMembershipProvider.DeleteUser 删除 UserProfile 表中的条目。这是我用于测试的代码片段。

    var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;

if (!roles.RoleExists("Admin"))
{
roles.CreateRole("Admin");
}
if (membership.GetUser("test", false) == null)
{
membership.CreateUserAndAccount("test", "test");
}

//Commented this out because you will get a foreign key
//error if you try to delete the user without removing the
//the mapping of the user to a role
//if (!roles.GetRolesForUser("test").Contains("Admin"))
//{
// roles.AddUsersToRoles(new[] { "test" }, new[] { "admin" });
//}

//This will delete the user information from webpages_membership
bool wasDeleted = membership.DeleteAccount("test");

//This will delelet the user information form UserProfile
wasDeleted = membership.DeleteUser("test", true);

正如您从评论中看到的那样,如果您正在使用角色并且您已将角色映射到该用户,那么这将不起作用。在删除用户之前,您需要先删除它们。我知道这不是 zms6445 的问题,但我想将其发布给使用角色的人。

关于c# - Membership.DeleteUser 没有删除用户的所有相关行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232995/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com