2010-11-21 16 views
3

すべてのテーブルからasp.netユーザーを削除しようとしています。
私は呼ん:membership.deleteuser()falseを返す

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

isDeletedがfalseに設定されています。

なぜユーザーを削除していないのかを伝える方法はありますか?

答えて

1

コード行にブレークポイントを置き、F8キーを押してデバッグモードにします。

+1

+1この多くの情報と論理的に関係があるのはデバッグだけだからです。 –

+0

Membership.DeleteUserメソッドにステップインできません。 – DahlinDev

+0

ブレークポイントがヒットしたら、username変数の値をチェックしてコードでないことを確認します。有効なユーザー名を送信している場合は、メンバーシップクラスのプロバイダに連絡して、それが機能していない理由を確認する必要があります。私たちは何かを行うには十分な情報を持っていませんが、現時点で何が間違っているのか推測しています。 – N0Alias

0

ユーザー名が間違っている可能性があります。名前がデータベース内の名前と一致しないか、ユーザーが実際にデータベースに存在しないかのいずれかです。

ただし、ApplicationNameが間違っている可能性があります。間違ったメンバーシップデータベースを誤って指している可能性があります。

私が見ることができる唯一の他の可能性は、あなたがaspnet_Users_DeleteUser sprocを修正して壊したことです。

+0

グレッグ - すべての良いものと私がチェックしたものすべて。私はsprocにも触れなかった。本当に私はここで動作させるための解決策を探していなかったので、失敗したメッセージを取得してデバッグできる方法があるかどうかを見ていました。 – DahlinDev

+0

フレームワーク内でデバッグすることはあまりありません...それはすべてsprocにあります。私はsprocを開いてテストし、あなたが問題を理解するまでそれを分解することをお勧めします。 sproc中に報告されていないエラーが発生している可能性があります。 ( '@ TablesToDeleteFrom'は15 btwに設定されています) – Greg

+0

このメソッドの戻り値は" @NumTablesDeletedFrom> 0 "として計算されます。 – Greg

0

プロバイダ名を削除してみてください。ユーザー名のみを送信してくれました。

私はFBAでSharePoint 3.0を使用しています。ユーザーがSharePointから削除されても、FBAデータベースでそれを見つけることができます。だからこそ私はこの関数を以下のように使います:

bool deleteUserResult = Membership.DeleteUser(currentUserLogin、true); もし(...」)新しい例外を投げる(deleteUserResult!)、このことができます

希望、 ダミアン

1

残念ながらそれもdeleteAllRelatedDataで、あなたは、会員ユーザーを削除するときのように見える=真

例えば

Membership.DeleteUser(UserName.Text, true);

ユーザが目を意味dbo.aspnet_Usersテーブルから削除あるNOT (別のGUIDを持っているにもかかわらず)同じ名前で再度登録することはできません。

これは意味が分かりませんが、これは意図された動作だと私は理解しています。

ただし、以下のルーチンを使用して、同じデータベースに(私はのように)複数のアプリケーション間でのASPNETメンバーシップを使用している場合しかし、これは制限があり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 

からすべてのトレースを削除します - あなたが可能同じユーザーが同じユーザー名で複数のアプリケーションにログインする状況があります。

このscenerioでは、削除を実行する前に、アプリケーション名を渡してユーザーのアプリケーションIDを決定する必要があります。

初めて投稿しましたので、優しくしてください...

2

私は、ユーザーが削除することができませんでしたもう一つの理由が見つかりました:あなたは(aspnet_Usersに)UserNameではなく、それに応じてLoweredUserNameを変更した場合、それはまた起こる
を。
少なくともこれは私に起こったことです:
すぐに私も変更しましたLoweredUserName私は最後にユーザーを削除できました。

関連する問題