membership.deleteuser()返回false

时间:2010-11-21 03:08:30

标签: asp.net membership

我试图从所有表中删除一个asp.net用户 我打电话的时候:

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

isDeleted被设置为false;

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

5 个答案:

答案 0 :(得分:2)

我发现了无法删除用户的另一个原因:
如果您相应地更改(在aspnet_Users中)UserName而不更改LoweredUserName,也会发生这种情况。
至少这是发生在我身上的事情:
一旦我改变了LoweredUserName,我终于可以删除用户了。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

不幸的是,当您删除成员资格用户时,即使使用deleteAllRelatedData = true

也是如此

e.g。

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。

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

答案 3 :(得分:0)

用户名可能不对 - 名称与数据库中的名称不匹配,或者用户实际上不在数据库中。

但是,ApplicationName可能是错误的,或者您可能错误地指向了错误的Membership数据库。

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

答案 4 :(得分:0)

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

我正在使用带有FBA的SharePoint 3.0,当用户从SharePoint中删除时,您仍然可以在FBA数据库中找到它。这就是我使用此功能的原因:

bool deleteUserResult = Membership.DeleteUser(currentUserLogin,true); if(!deleteUserResult)抛出新的异常(“...);

希望这有帮助, 达明