基本上我希望能够赶在用户让他们的会话超时,然后点击的东西,最终导致一个异步回发。我想通了,如果我在在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重写重定向传入请求到产生所需的脚本输出的页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top