1

現在、ASP.Net メンバーシップ アプリケーションで多くの問題が発生しています。

関係のない理由により、古いスタイルの Web.config で指定された資格情報を使用する MembershipProvider 実装と、すべてを許可する RoleProvider を使用しています (ここでは RolesProvider が問題になる可能性があります)。これは、私たちが経験した他のいくつかの問題に対するややハックな回避策であり、この最小限のケースを機能させたいだけであるため、変更できるものではありません。

MembershipProvider の実装は美しく機能しており、自分のマシンでテストするとすべて正常に動作します。ただし、それをテスト サーバーにプッシュすると、認証は成功しますが (トレース ログで Cookie を確認できます)、トレース ログの次のエントリで確認できるように、ログイン ページに直接戻されます。

19   9/7/2010 5:50:03 PM   /login.aspx     302   POST   View Details
20   9/7/2010 5:50:03 PM   /Default.aspx   302   GET    View Details
21   9/7/2010 5:50:03 PM   /login.aspx     200   GET    View Details

多くのトレースをコードに追加したので、私は本当に正常に認証しています:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    LoginControl.LoggedIn += new EventHandler(LoginControl_LoggedIn);
    LoginControl.LoginError += new EventHandler(LoginControl_LoginError);
}

void LoginControl_LoggedIn(object sender, EventArgs e)
{
    Trace.Write("LoginControl_LoggedIn", "Logged in successfully");
}

void LoginControl_LoginError(object sender, EventArgs e)
{
    Trace.Write("LoginControl_LoginError", "Failed to authenticate");
}

私に与えます:

LoginControl_LoggedIn   Logged in successfully   0.0044027241880433   0.000238

リダイレクト先の Default.aspx でトレースを試みても、PreInitイベントは発生しません。

問題は RoleProvider ではないと思います。これは、実際にはすべてに「はい」と言っているだけだからです。

public override bool IsUserInRole(string username, string roleName)
{
    return true;
}

SO:62013Forums:1318557、およびSO:62013 で言及されているブログ投稿を見てきましたが、どれも違いはありません。

何か考えはありますか?私は完全に途方に暮れています。

4

2 に答える 2

1

Visual Studio で .NET Framework ソース ステッピングを有効にしてみましたか?

Tools > Options > Debugging > (uncheck) Enable Just My Code

Tools > Options > Debugging > Enable .NET Framework source stepping

次に、Microsoft Symbol Servers から .NET シンボルをインポートする必要がありますが、それをガイドします。少なくとも、基本のロール プロバイダーとメンバーシップ プロバイダーをステップスルーして、それらがリダイレクトを行っているかどうかを確認できる場合があります。

これは実際には答えではありません (コメントとして残すことをお勧めしますが、まだ十分な担当者がいません)。

于 2010-09-13T10:39:03.897 に答える
1

ここにあるトラブルシューティングの手順を実行してみてください。

フォーム認証のトラブルシューティング

うまくいけば、そこで問題が見つかります。現時点で私が持っている他の唯一の提案は、web.config でロール プロバイダーを無効にし (可能であれば)、その方法を試すことです。

于 2010-10-11T13:13:04.247 に答える