3

私たちが構築しているサイトで。ユーザーのセッションが終了したときに、ユーザーをデフォルトのページにリダイレクトできるようにする必要があります。

一見したところ、Session_End と Response.Redirect を使用してこのジョブを実行しました。

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    Response.Redirect("~/global/exit.aspx")
End Sub

しかし、それはResponse is not available in this contextエラーのがらくたを生成します。当然のことながら、サーバーのエラー ログにスパムを送信したくありません。

ASP.NET 2.0 で終了するセッションを処理する最も効率的な方法は何ですか?

4

3 に答える 3

3

次のコードを global.asax.cs ファイルに追加しました。

 private void IsAuthenticated()
    {
        string vFileName = Path.GetFileName(HttpContext.Current.Request.Path);
        string vExt = Path.GetExtension(vFileName).ToLower();
        if ((vFileName != "Login.aspx") && (vExt == ".aspx"))
        {
            if (HttpContext.Current.Session["LoggedIn"] == null)
            {
                HttpContext.Current.Response.Redirect("~/Login.aspx");
            }
        }
    }
    void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        IsAuthenticated();
    } 

NS: グローバル .asax ファイルの最初の行は次のとおりです。

<%@ Application  Inherits="???.Global" Language="C#" %>
于 2008-10-15T07:31:50.473 に答える
2

ユーザー固有のページの Application.Begin_Request にセッション データが存在するかどうかを確認し、存在しない場合はユーザーをログインまたはホームページにリダイレクトすることで処理しました。

于 2008-10-14T14:31:49.487 に答える
2

ユーザーが呼び出し可能なメソッドではなく、ASP.NET によってトリガーされ、要求の一部ではないため、応答を利用できないため、session_end メソッドを使用できます。

最大の方法は、ページのロードのどこかでセッションが欠落しているかどうかを確認して確認し、メインにリダイレクトすることです。

私が以前に行ったことは、セッション固有のすべてのページに使用された「RestrictedPage.master」マスター ページ内にこのチェック ロジックを配置することです。セッションが失われると、リダイレクトされます。

于 2008-10-14T15:39:16.090 に答える