基本的に、ユーザーがセッションをタイムアウトさせてから、非同期ポストバックを引き起こす何かをクリックしたときにキャッチできるようにしたいと考えています。このコードを Session_Start (Global.asax 内) に配置すると、セッション タイムアウト中に発生したポストバックをキャッチできることがわかりました。
With HttpContext.Current
If TypeOf .Handler Is Page Then
Dim page As Page = CType(.Handler, Page)
If page IsNot Nothing AndAlso page.IsPostBack Then
'Session timeout
End If
End If
End With
これはうまくいきます。私の質問は、アプリケーションの残りの部分が実行を終了しないように、Response に JavaScript を挿入してから Response.End() を呼び出すことができるようにしたいということです。問題は、Response.Write("<script ... ")
フォローしようとするとResponse.End()
、javascript が応答ストリームに書き込まれないことです。アプリケーションには、Response に Javascript を安全に書き込むことができる場所が他にもあると確信していますが、セッション オブジェクトにアクセスしようとするとエラーが発生するため、アプリケーションの残りの部分を実行させることはできません。
要約すると、Global.asax の Session_Start イベントの応答に JavaScript を挿入する必要があります。
注: なぜ Session_End でこれを行わないのか疑問に思われるかもしれません... InProc セッションを使用しないため、Session_End は呼び出されません... しかし、それは要点の横にあります... 明確にしたかっただけですなぜSession_Startでこれを行っているのですか。