- - PR -
セッション終了時の画面移動
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-22 20:15
いつも皆様にはお世話になっております。
ASP.NETで、セッションが終了したら画面Aに移動させるという処理なのですが、 Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) Response.Redirect("./画面A.aspx") End Sub と、上記のようにコーディングしたところ移動できませんでした。 この場合、Session_End 内での処理は行えないのでしょうか? それとも、Response.Redirectは Global.asax では使用できないのでしょうか? 初歩的な質問のようで申し訳ないですが、宜しくお願い致します。 | ||||
|
投稿日時: 2004-06-22 22:37
Session_Endってクライアントのリクエストと無関係に発生すると思うんですが… | ||||
|
投稿日時: 2004-06-22 22:41
HTTPな通信は、リクエストとレスポンスの繰り返しです。
クライアントからのリクエストがなければ、サーバからレスポンスを返すことはできません。 と、ここまではOKでしょうか? セッションの終了は、クライアントからのリクエストとは無関係に発生します。 つまり、クライアントからのリクエストがなくてもサーバ内で(タイムアウトなどを契機に)発生し、Session_OnEndが実行されるわけです。 ここまでを踏まえて、 Redirectを返したいのは何時でしょうか? 「セッションが終了した時点」で、自動的にクライアントの画面が遷移するのをお望みなら、ムリです。 理由は前述の通り、HTTPにおいて一方的なレスポンスはあり得ないから。 「セッションが切れて最初のリクエスト時点」であるならば、そのリクエストに対してリダイレクトを返せますよね。 『ASP.NET が要求に応答するとき』に『現在の要求でセッションが作成されたかどうか』で判断できそうです。 ※ログイン画面まで処理の対象となってしまわないようにする必要があります。 # 要件次第では、フォーム認証にしてしまうほうが手っ取り早いとは思いますが。 # もたもた書いているうちに、かぶっちゃいました。 [ メッセージ編集済み 編集者: He 編集日時 2004-06-22 22:43 ] | ||||
|
投稿日時: 2004-06-23 19:32
なちゃ様、He様、返答有難うございます。
>Redirectを返したいのは何時でしょうか? >「セッションが終了した時点」で、自動的にクライアントの画面が遷移するのをお望みなら、 >ムリです。 >理由は前述の通り、HTTPにおいて一方的なレスポンスはあり得ないから。 そうだったのですか。だから、なちゃ様は 「Session_Endってクライアントのリクエストと無関係に発生すると思うんですが…」 ということだったのですね。 判りやすい説明ありがとうございます。 >Redirectを返したいのは何時でしょうか? He様のおっしゃる通り、「セッションが終了した時点」で返したいと思っていました。 >『ASP.NET が要求に応答するとき』に『現在の要求でセッションが作成されたかどうか』で判>断できそうです。 >要件次第では、フォーム認証にしてしまうほうが手っ取り早いとは思いますが。 このやり方で試してみようと思います。 ただ、複数画面に当てはまるのでそこも考慮しなければならない感じです。 その際は、ログイン画面気をつけます(^^) 対応できたら報告したいと思います。 | ||||
|
投稿日時: 2004-06-24 00:17
『』で囲んだ部分は、検索するとそれなりの結果が返ってきますので、参考にしてください。 | ||||
|
投稿日時: 2004-07-15 11:21
遅レスになりました。
標題の件ですが、画面移動や更新処理が発生するときに、セッションが切れているかどうかを判断して、切れていたらログイン画面へ戻すようにしました。 返答をくれた皆様、ありがとうございました。 |
1