我试图从所有表中删除一个asp.net用户 我打电话的时候:
bool isDeleted = Membership.DeleteUser(username, true);
isDeleted
被设置为false;
有没有办法说明为什么不删除用户?
答案 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)抛出新的异常(“...);
希望这有帮助, 达明