0

まず、キーと値のペアをセッションに追加するログイン ページを作成し、そのページでセッションがそのペアを保持していることを確認しました。次に、セッションでそのペアを探す別のページに移動しようとしましたが、そこにはありません。セッションのタイムアウトを 15000 に設定したので、タイムアウトしません。私は現在、静的クラスを使用してセッション HttpContext.Current.Session を調べています。各ページはこの静的クラスを呼び出してセッションを確認しますが、セッション キー カウント = 0 になるたびに、ログイン ページでペアになった後を除きます。

public static class UserAuthenticationManager
{
    public static bool IsAuthenticated()
    {
        UserAuthenticationTicket ticket = ((UserAuthenticationTicket)HttpContext.Current.Session[DefinesPL.UserTicketSessionName]);

        string redirectUrl = String.Format(DefinesPL.LoginPage);

        if (ticket != null)
        {
            if (ticket.IsExpired())
            {
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Response.Redirect(redirectUrl, true);
            }
        }
        else
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Response.Redirect(redirectUrl, true);
        }

        return true;
    }
4

2 に答える 2

1

最も一般的な原因は、Cookie が無効になっていることです。Cookie を要求するか、Cookie を使用しないセッション モデルに切り替える必要がありますが、これは操作が少し難しくなります。

于 2009-08-05T01:45:50.810 に答える
0

Global.asax がプロジェクトに追加されていることを確認することもできます。HTTPリクエストごとに新しいセッションが作成される前に、これに遭遇したと思います。

于 2009-08-05T01:58:23.527 に答える