Frage

Im Grunde möchte ich in der Lage sein, zu fangen, wenn ein Benutzer seine Session-Timeout läßt und klickt dann auf etwas, dass endet verursacht eine Async Postbacks. Ich fand heraus, dass, wenn ich diesen Code in meinem Session_Start setzen (in Global.asax), dann kann ich ein Postback fangen, die während einer Session-Timeout aufgetreten:

    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

Das funktioniert gut. Meine Frage ist, ich möchte in der Lage sein, einige Javascript in die Antwort zu injizieren und dann rufe Response.End (), so dass der Rest der Anwendung nicht beenden Ausführung gelangt. Das Problem ist, dass wenn ich versuche, Response.Write("<script ... ") von Response.End() gefolgt dann ist Javascript nicht in den Antwortstream geschrieben werden. Ich bin sicher, es gibt auch andere Orte in der Anwendung, dass ich sicher Javascript auf die Antwort schreiben kann, aber ich kann der Rest der Anwendung nicht zulassen ausgeführt werden, da es Fehler, wenn es um die Sitzungs Objekte zuzugreifen versucht.

Um es zusammenzufassen: Ich muss in der Antwort injizieren Sie Javascript in dem Session_Start Ereignis in Global.asax

Hinweis: Sie können sich fragen, warum ich tue dies nicht in Session_End ... wir nicht verwenden InProc Sitzungen und so Session_End nicht aufgerufen ... aber das ist nebensächlich ... wollte nur machen sie deutlich, warum ich tue dies in Session_Start.

War es hilfreich?

Lösung

Das Schreiben in dem Antwortstream außerhalb eines Httphandler ist in der Regel keine gute Idee; kann es in einigen Fällen Ecke arbeiten, aber es ist nicht, wie die Dinge funktionieren sollen.

Haben Sie darüber nachgedacht entweder mit einer Seite Basisklasse oder einer Seite Adapter, dies zu tun? Auf diese Weise würden Sie brauchen nur einen der Code kopieren, und es könnte entweder alle Seiten angewendet werden oder nur die, die Sie wählen.

Eine andere Möglichkeit wäre URL zu verwenden Umschreiben der eingehenden Anfrage auf eine Seite umgeleitet, die die Skript-Ausgabe erzeugt die Sie benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top