私はRazorプロジェクトに取り組んでおり、既存のユーザーデータベースをSimpleMembership ProviderのDBスキーマに統合する必要があります。これは、既存のUserテーブルを指定し、SimpleMembership APIがUsernameとUserIDに使用するカラムを指定することで行います。プロセスでWebSecurity.ChangePassword()をFAilにする原因は何ですか?
WebSecurity.InitializeDatabaseConnection("DB_ConnStr", "User", "UserId", "Username", true);
しかし、私は私の既存のデータベース内の各ユーザーの行のための新記録とwebpages_Membershipテーブルを移入しています。これはうまくいっており、既存の各ユーザーの挿入を処理するコードを記述しました。
挿入時に、わかりやすくするためにダミーの暗号化されたパスワードトークンを使用し、すべてのユーザーに同じパスワードを設定します。次に、webpages_Membershipテーブル内の各ユーザーの正しいパスワードを設定するために、レコードに対して別のスクリプトを実行する必要があります。各ユーザーの
WebSecurity.ChangePassword(username, dummyPwd, newPwd)
を、「NEWPWD」パラメータとして復号化された現在のパスワードを渡します。これは、既存のユーザーテーブルから現在のパスワードを解読し、その後の呼び出しが含まれます。
これは、100,000を超えるレコードに対して、これが呼び出されるケースの99%で正常に動作します。しかし、約40例で失敗している。
どのような理由でこのメソッドが失敗する可能性がありますか?
例外はスローされません。メソッドは単にfalseを返します。 –
もう少しソースコードを見ると、webpages_Membershipテーブルにユーザーが見つからない可能性があります。それを排除しよう。 'WebSecurity.ChangePassword()'呼び出しがfalseを返すケースを特定できれば、関連するユーザー名を取得し、 'Membership.GetUser(username)'がnull以外の値を返すことを確認できますか? –