处理会话超时在使用Javascript asp.net
-
20-09-2019 - |
题
基本上我希望能够赶在用户让他们的会话超时,然后点击的东西,最终导致一个异步回发。我想通了,如果我在在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
此工作正常。我的问题是,我想能够注入一些JavaScript到响应,然后到Response.End调用(),使应用程序的其它部分没有得到执行完毕。问题是,当我尝试Response.Write("<script ... ")
其次Response.End()
然后JavaScript并不会被写入响应流。我敢肯定有其他地方的应用程序,我可以放心地编写JavaScript的反应,但我不能让应用程序的其余部分执行,因为当它试图访问会话对象就会报错。
要综上所述:我需要注入的JavaScript成在在session_start事件Global.asax中
的响应请注意:你可能会奇怪,为什么我没有这样做,在Session_End中......我们不使用是InProc会话等Session_End中不会被调用......但那是题外话......只是想要说清楚为什么我在在session_start这样做。
解决方案
书写到一个HttpHandler以外响应流通常是不是一个好主意;它可能在某个角落的情况下工作,但它不是事情是如何打算的工作。
您是否使用一个页基类或页适配器做到这一点考虑?这样,你只需要代码的一个副本,它可以适用于任何所有页面或只是你选择的人。
另一种选择是使用URL重写重定向传入请求到产生所需的脚本输出的页面。
不隶属于 StackOverflow