本质上,我希望能够捕捉到用户何时让他们的会话超时,然后单击最终导致异步回发的内容。我发现如果我把这段代码放在我的 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 不会被写入响应流。我确信应用程序中还有其他地方可以安全地将 Javascript 写入响应,但我不能让应用程序的其余部分执行,因为它在尝试访问会话对象时会出错。
总结一下:我需要在 Global.asax 的 Session_Start 事件的响应中注入 javascript
注意:您可能想知道为什么我不在 Session_End 中执行此操作...我们不使用 InProc 会话,因此不会调用 Session_End...但这无关紧要...只是想弄清楚为什么我在 Session_Start 中这样做。