К сожалению, это выглядит, когда вы удаляете членство пользователя, даже если deleteAllRelatedData = true
, например
Membership.DeleteUser(UserName.Text, true);
Пользователь НЕ удален из таблицы 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 для нескольких приложений (как и я) с одной и той же базой данных - может возникнуть ситуация, когда один и тот же пользователь входит в несколько приложений с одним и тем же именем пользователя.
Для этого scenerio вам нужно будет ввести имя приложения и определить идентификатор приложения для пользователя до выполнения удаления.
Впервые я написал здесь, так что будьте осторожны ...