2013-03-05 44 views

回答

9

我跑了一個測試,並驗證SimpleMembershipProvider.DeleteUser不起作用的廣告。根據文檔:

這種方法刪除的會員賬戶表中的條目(默認情況下,webpages_Membership)。如果deleteAllRelatedData爲true,則存儲在用戶表中的所有用戶數據也將被刪除。

但在我的測試中,我設置deleteAllRelatedData爲真,它只是刪除了用戶配置表中的條目,使條目webpages_membership不變。無論是在文檔中的錯誤還是在執行SimpleMembership

但我確實找到了解決辦法。首先致電SimpleMembershipProvider.DeleteAccount。這將刪除網頁會員表中的條目。然後致電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來說不是問題,但我想把這個放在那裏用於使用角色的人。

+0

你如何訪問方法DeleteAccount和DeleteUser。我嘗試了你的解決方法,SimpleMembershipProvider類中唯一可用的方法是Equals和ReferenceEquals。 – zms6445 2013-03-05 21:31:00

+0

我在答案中添加了我的測試代碼。希望這會回答你的問題。如果它沒有在你的問題中提供代碼示例,那麼我可以提供幫助。 – 2013-03-06 14:02:37

+0

太棒了!這工作完美。 – zms6445 2013-03-06 14:06:21

相關問題