2011-11-13 29 views
0

SessionStateタイムアウトが発生したときに私のWebページを閉じたい。これは私のウェブ設定のコードです:ASP.NET SessionState TimeOutが機能しない

<system.web> 
<sessionState timeout="1" mode="InProc"/> 
</system.web> 

テスト目的で私は1分に設定しました。以下は、私のGlobal.asaxのコードです:

protected void Session_End(object sender, EventArgs e) 
{ 
    Response.Redirect("~/LogOut.aspx"); 
} 

私は、これは、Page_Loadイベント内のコードで、セッションタイムアウトを確認するためのページのいずれかにラベルを置く:

lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString(); 

私はサイトに入り、このページに来て、ラベルはセッション時間:1を示しますが、1分後に私はLogOutページにリダイレクトされず、現在のページはまだ完全にアクティブであり、動作しています。終了しました。 私はVisual Studio 2008で開発サーバーを使って作業していますので、IIS設定に関するこの記事はこの段階では適切ではないようです。 助けてください!

答えて

2

HTTPは要求/応答プロトコルです。 ブラウザとサーバーの間に永続的接続がありません。 Session_Endのコードは効果的に何もしません。ブラウザに何かをさせることはできません。

(クライアント側)JavaScriptタイマーを作成し、セッションタイムアウトが経過する前にactivelyログアウトページをロードする必要があります。

+1

その時点でResponseがnullであるため、コードがクラッシュすることさえあります。 –

+0

javaScriptタイマーの作成に助けてくれますか?ありがとうございました。 –

+1

私はAJAXタイマーを使いました。 page_Loadでは、セッションのタイムアウト値をint変数に60000を掛けてミリ秒単位でタイムアウトさせた後、タイムアウトから2000ミリ秒を差し引いたタイムアウト値を設定して、セッションタイムアウトが少し前に発生するようにします。それは私がLogOutページにリダイレクトするTimer_Tickイベントを発生させます。それはうまく動作します。ありがとうございました! –

0

これは、セッションのタイムアウトをテストする正しい方法ではないようです。セッション変数に何かを入れてみてください。もう数分間はページに触れないで、セッションからそれを読み返してみてください。あなたのセッションが生きているならば、変数を見ることができるはずです。それはあるかもしれない時はいつでも -

は、タイムアウトが発生した後、私の経験でhttp://aspalliance.com/1182_Troubleshooting_Session_Related_Issues_in_ASPNET

+0

ありがとうございます、私はセッションの損失を扱うあなたのリンクを見ましたが、私の問題は、セッションが終わっていないときに終わらない、ページがいつものように反応し続け、ボタンが反応し、普段など –

+0

@DovMiller、Ondrejはそれを適切に入れました。これを簡単な説明で説明すると、Session_Endは "ブラウザ"ではまったく起動しません。これは、セッションが終了するたびにサーバーで発生するイベントです。その間にクライアントが接続されている場合と接続されていない場合があるため、AFAIKを使用してResponseを行うことはできません。このイベントでリダイレクトします。したがって、ブラウザが自動的に反応することはありません。先ほど提案したセッション変数のアプローチを試してみましたか? –

1

Session_Endは、(クライアント側のタイマーを介して実行することができる)最初のポストバックに呼び出され...セッションおよびトラブルシューティングセッションの詳細については、こちらをご覧ください。 ..ユーザーがブラウザを閉じるだけでこのイベントが呼び出されることはありません(その状況でポストバックを行うには、特定のJSハンドラをunloadにした場合を除く)。いくつかの情報については

は、以下を参照してください。

+0

ありがとうございました。それらのリンクのいくつかは私にとって有益です。 –

+0

@DovMillerあなたは歓迎されています:-)助けて受け入れられた回答としてupvote/markを忘れないでください(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answerを参照してください)。 -作業)。 – Yahia

関連する問題