2010-11-21 124 views
3

我想从所有表中删除一个asp.net用户。
当我打电话:membership.deleteuser()返回false

bool isDeleted = Membership.DeleteUser(username, true); 

isDeleted被设置为false;

有没有办法说明它为什么不删除用户?

回答

1

在该行代码上放置一个断点,然后按F8以调试模式进入。

+1

+1因为唯一合乎逻辑的事情就是调试。 – 2010-11-21 03:56:46

+0

您无法步入Membership.DeleteUser方法。 – DahlinDev 2010-11-21 19:36:57

+0

当断点遇到时,请检查用户名变量的值以确保它不是您的代码。如果您使用有效的用户名发送邮件,则必须联系该成员资格类的提供商,以了解其为什么不起作用。我们没有足够的信息去做任何事情,只是猜测现在有什么不对。 – N0Alias 2010-11-22 00:05:47

0

用户名可能是错的 - 或者名称与数据库中的名称不匹配,或者用户不在数据库中。

但是,ApplicationName可能是错误的,或者您可能会错误地指向错误的成员资格数据库。

我能看到的唯一的另一种可能性是您修改了aspnet_Users_DeleteUser sproc并将其破坏。

+0

格雷格 - 所有好东西要检查和我检查过的所有东西。我也没有碰过这个问题。真的,我并没有寻找一种解决方案来让它在这里工作,而且还在寻找是否有办法获得失败的消息,以便我可以进行调试。 – DahlinDev 2010-11-22 14:09:27

+0

框架本身没有太多要调试......这一切都在存储过程中。我建议打开这个sproc并测试它,并分解它直到找出问题。在未报告的sproc期间可能发生错误。 ('@ TablesToDeleteFrom'设置为15 btw) – Greg 2010-11-22 14:26:14

+0

我应该添加该方法的返回值计算为“@NumTablesDeletedFrom> 0” – Greg 2010-11-22 14:45:01

0

尝试删除提供者名称,它通过发送用户名只为我工作。

我正在使用SharePoint 3.0与FBA,当用户从SharePoint中删除时,仍然可以在FBA数据库中找到它。这就是为什么我使用这个功能如下:

bool deleteUserResult = Membership.DeleteUser(currentUserLogin,true); 如果抛出新的异常(” ...)(deleteUserResult!);

希望这有助于 达明

1

不幸的是,看起来,当你删除会员用户喜欢,甚至deleteAllRelatedData =真

Membership.DeleteUser(UserName.Text, true);

用户是NOT从dbo.aspnet_Users表中删除,这意味着第在用户不能再重新注册相同的名称(即使他们将会有不同的GUID)

我明白这是意向行为,虽然它对我来说没有意义。

但是,下面的程序将在ASPNET数据库

CREATE PROCEDURE [dbo].[ASPNET_Member_DELETE_By_Name] 
    @UserNameToDelete nvarchar(255) 
    AS 
    BEGIN 

    DECLARE @UserToDelete nvarchar(255) 

    SELECT @UserToDelete = UserID 
    FROM aspnet_Users WHERE UserName = @UserNameToDelete) 

    DELETE FROM aspnet_Profile WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_UsersInRoles WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_PersonalizationPerUser WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_Membership WHERE UserID = @UserToDelete 
    DELETE FROM aspnet_Users WHERE UserID = @UserToDelete 

    END 

但是删除所有的痕迹,如果你正在使用ASPNET成员跨多个应用程序(如我)使用相同的数据库这有一定的局限性 - 你可能有相同的用户使用相同的用户名登录到多个应用程序的情况。

对于此场景,您需要传递应用程序名称并在执行删除之前确定用户的应用程序ID。

我第一次在这里发布,所以要温柔......

2

我发现另一个原因是,用户无法删除:
如果你改变它也发生(在aspnet_Users)的UserName但不是LoweredUserName相应。
至少这是发生在我身上的事情:
尽快我改变了LoweredUserName我终于可以删除用户了。