現在、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:62013、Forums:1318557、およびSO:62013 で言及されているブログ投稿を見てきましたが、どれも違いはありません。
何か考えはありますか?私は完全に途方に暮れています。