1

これは Web フォーム アプリケーション プロジェクト (WAP) です。プログラムでカスタム プロファイルプロパティを使用してユーザーを作成していますが、ユーザー データがユーザー テーブルに保持されていることを確認できますが、aspnet_membership テーブルやメンバーシップ テーブルには保持されていません。カスタム登録フォームを使用して新しいユーザーを作成すると、ログインに失敗します。誰でもトラブルシューティングのチェックリストを提案できますか?

MembershipCreateStatus status = MembershipCreateStatus.Success;
MembershipUser newUser 
    = Membership.CreateUser(userNameTxt.Text.Trim(), passwordTxt.Text, 
        emailTxt.Text, questionTxt.Text, answerTxt.Text, true, out status);
Roles.AddUserToRole(userNameTxt.Text.Trim(), "Member");

// Gather and save Profile info
CustomProfile profile = CustomProfile.GetProfile(userNameTxt.Text.Trim());
profile.Personal.Email = emailTxt.Text.Trim();
profile.Personal.FirstName = firstNameTxt.Text.Trim();
profile.Personal.LastName = lastNameTxt.Text.Trim();
profile.Save();

エラー メッセージ:ログインに失敗しました。もう一度やり直してください。

何が起きているか: CreateUser が null を返す

      <providers>
          <remove name="DefaultMembershipProvider"/>
          <add 
              name="DefaultMembershipProvider" 
              type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
              connectionStringName="LocalSqlServer" 
              enablePasswordRetrieval="false" 
              enablePasswordReset="true" 
              requiresQuestionAndAnswer="true" 
              requiresUniqueEmail="false" 
              minRequiredPasswordLength="6" 
              minRequiredNonalphanumericCharacters="0" 
              passwordAttemptWindow="1000" 
              passwordFormat="Hashed"
              applicationName="/" />
      </providers>

<remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
      connectionString="Initial Catalog=MYDB;Data Source=WIN2K8;Integrated Security=SSPI;"
      providerName="System.Data.SqlClient" />
    <remove name="MYDBConn" />
      <add name="MYDBConn" connectionString="Initial Catalog=MYDB;Data Source=WIN2K8;Integrated Security=SSPI;"
          providerName="System.Data.SqlClient" />
4

2 に答える 2

0

コードからユーザーを作成する前に、 ASP.Net構成を使用してユーザーを作成できることを確認してください。

ここに画像の説明を入力してください

ここにいくつかの提案があります「あなたのログインの試みは成功しませんでした。もう一度やり直してください。」-ASP.NETログイン制御。

于 2012-11-28T19:56:18.890 に答える
0

どうやら.NET 4では、使用されるデフォルトのハッシュアルゴリズムはHMACSHA256であり、以前のフレームワークバージョンで使用されていたSHA1ではありません。ここで解決策を見つけました:

ASP.NET メンバーシップ - ユーザー パスワード ストレージ

3.5 から ASP.net 4.0 にアップグレードした後、ログインに失敗する

次のように、SHA1 の構成ファイルを微調整しました。

<membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1">
    ...
</membership>
于 2012-11-29T03:36:20.523 に答える