3

ポストバック中にセッションが期限切れになったときに、ユーザーをホームページにリダイレクトしたいと考えています。フォームのタイムアウトが発生すると、ユーザーはログイン ページに誘導されます。

セッション タイムアウト = 20、フォーム タイムアウト = 2880

Global.asax で次のコードを試しましたが、動作せず、Application_Error ("Response is not available in this context.") が発生します。

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when the session ends
    Response.Redirect("~/HomePage.aspx")
End Sub
4

3 に答える 3

2

Session_End はブラウザーによって開始されるわけではありません (ブラウザーからの応答は、理論的にはセッションをさらに 20 分延長する必要があるため)、したがって、応答オブジェクトの概念は意味がありません。

私が見ることができる唯一のオプションは、関数を利用するある種のクライアント側スクリプト(javascript)をwindow.setTimeout持つことです...(テストされていない)のようなもの...

<body onload="window.setTimeout(function(){document.location.href='/Home.aspx';},72000000);">

アップデート

リクエストをもう一度読んだところ、要件は少しあいまいです。Webページが20分後に(ユーザーの介入なしで)自動的にリダイレクトされることが要件である場合、私の答えはそれに対処します。

ただし、ユーザーが20分後にサーバーに別のリクエストを送信した場合、ホームページにリダイレクトすることが要件である可能性が高いと思います. その場合、MajoB の回答は適切です。

于 2012-06-13T15:01:05.053 に答える
1

これはweb.configのプロパティです

<forms name="WhateverYourAuthNameIs" 
       loginUrl="~/HomePage.aspx" 
       defaultUrl="~/Default.aspx" 
       protection="All" path="/" 
       cookieless="AutoDetect"/>

有効期限が発生すると、に設定されているページに送信loginUrlされます。

于 2012-06-13T15:29:06.800 に答える
0

使用できない場合、 Server.TransferまたはRespose.Redirect各ページの page_load イベントでいくつかのセッション変数を確認できます。このセッション変数が null の場合、特定のページにリダイレクトします。コードの重複を避けるためにベースページを作成できます。

于 2012-06-13T15:00:54.080 に答える