2

ASP.NET 4.0 C# プロジェクトに取り組んでいます。はCreateUserWizard正常に動作していますが、作成したログイン コントロールには常に次のメッセージが表示されます。

Your login attempt was not successful. Please try again.

これは、machine.config のメンバーシップと接続文字列の設定を実験に変更した後に発生し始め、後でデフォルトに変更しました。

接続文字列の設定は次のとおりです。

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

そして、ここに会員セクションがあります:

<membership>
    <providers>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>

また、ウェブサイトのデータをログイン コントロールのデフォルト データに保存するようにデフォルト データベースを変更しました。つまりASPNEDB.mdf、ページのすべてのコード ビハインドに 2 行を記述しました。

SqlConnection con = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true");
SqlCommand cmd = new SqlCommand();

正常に終了CreateUserWizard1して、デフォルトの asp.net ラベルを使用したホームページ.aspx にリダイレクトしてもLoginName、ラベルは空白で表示されます。

そして、手動で入力しLabel1て入力Label1.Text = HttpContext.Current.User.Identity.Name;しても、まだ機能しません。

助けてください。私はこのプロジェクトを私の大学に見せなければなりません。それだけでなく、私のチームは私のEXPERIMENT.

4

1 に答える 1

3

ここにはいくつかの潜在的な問題があります。

  1. web.config で machinekey を変更しました。その場合は、元に戻してください。元に戻せない場合は、テーブル内のすべてのユーザーを削除して再作成してください。比較のために入力されたパスワードをハッシュするために machinekey を必要とする一方向ハッシュ アルゴリズムを使用しています。

  2. 接続文字列を変更しました。データベースにそれらのユーザー レコードが含まれていると確信していますか? 次に、データベースを削除/再作成しましたか? もしそうなら、それらのユーザーはなくなっています。#1を参照してください。

さらに言えば、すべてを元の状態に戻していないことは明らかです。

では、なぜログインに失敗するのでしょうか。可能なオプションは次のとおりです。

  1. アクセスされているデータベースは、あなたが思っているものではありません。
  2. ユーザーが見ているデータベースには本当に存在しません。
  3. ユーザーは存在しますが、指定したパスワードが正しくありません。
  4. ユーザーは存在し、パスワードは正しいですが、マシンキーが変更されているため、システムはそれを正しくハッシュできません。

基本的には、データベースをクリアして、ユーザーを再度追加することで、最初からやり直すことになるでしょう。

于 2011-09-14T15:27:27.473 に答える