zms*_*445 3 c# asp.net-mvc-4 simplemembership
Membership.DeleteUser()
设法删除我要删除的用户的用户配置文件.为什么它也不删除它存储的信息webpages_membership
.
我此时并未使用角色,因此请记住您的答案.
我运行了测试并验证SimpleMembershipProvider.DeleteUser不像宣传的那样工作.根据文件:
此方法删除成员资格帐户表中的条目(默认情况下为webpages_Membership).如果deleteAllRelatedData为true,则还会删除存储在用户表中的所有用户数据.
但在我的测试中,我将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);
Run Code Online (Sandbox Code Playgroud)
正如您在评论中看到的那样,如果您正在使用角色并且您将角色映射到该用户,则这将不起作用.在删除用户之前,您需要删除它们.我知道这不是zms6445的问题,但我想把它放在那里使用角色的人.
归档时间: |
|
查看次数: |
1955 次 |
最近记录: |