0

リダイレクト ループが発生しましたが、その理由がわかりません。この単純なコードを使用して、誰かが default.aspx にアクセスし、既にログインしている場合、inside.aspx にリダイレクトする必要があります。リダイレクト ループが発生するのはなぜですか?

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (User.Identity.IsAuthenticated) // if the user is already logged in
        {
            Response.Redirect("inside.aspx");
        }
    }

}

編集:

両方のページは、次のコードを使用してマスター ページを共有します。これは、ログオフ コントロールが押された場合にのみオフになります。

public partial class template : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
    {
        Response.Redirect("default.aspx");
        Session.Abandon();
    }
}
4

2 に答える 2

1

ログアウトしようとしているときに質問があったと思いますが、ページはデフォルトのページに再度リダイレクトされています。理由は、リダイレクト後にセッションをクリアしているため、Session.Abandon() が呼び出されないためです。しかし、認証が本当に Session.Abandon() に依存しているかどうかはわかりません。その場合、リダイレクトが再び表示されます。

protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
        {
            Session.Abandon();
            Response.Redirect("default.aspx");
        }

メンバーシップ プロバイダーを使用している場合は、ユーザーがログアウトした後に自動的にリダイレクトするように構成できる defaultUrl を確認してください。ログアウトを手動でトリガーするには、FormsAuthentication.SignOut() を使用します。

于 2013-06-21T20:23:43.040 に答える
0

問題は、両方のファイルの CodeFile 参照が同じだったことです。ばかげた間違いですが、この問題が発生した場合は必ず確認してください。

于 2013-06-24T16:27:39.783 に答える