Ich habe Probleme beim Auffinden, warum die Sitzung in einer Webanwendung neu gestartet wird.Warum sollte Session_Start neu geladen werden, ohne dass Session_End ausgelöst wird?
Ich habe platziert Code in beiden Session_End
oder Application_End
Verfahren, um zu versuchen und zu verfolgen, was geschieht, aber keiner dieser beiden Verfahren werden im Code vor der Sitzung neu gestartet und feuert die Session_Start
Prozedur wieder erreicht.
Weiß jemand, was dazu führen würde, dass die Session_Start
Prozedur neu startet, ohne die Session_End
oder Application_End
Prozeduren auszulösen?
Grundsätzlich ist es Code in der Session_Start
, die Session-Variablen und Code in der Session_End
setzt, die die Anmeldung versucht, warum die Sitzung beendet
Es gibt 100 oder mehr aspx Seiten mit VB-Code hinter ihnen allen auf der Website und es sieht so aus, als würde die Sitzung nach dem Zufallsprinzip gelegentlich bis zu 3 Mal neu gestartet, während die Startseite geladen wird. Ich habe eine Pause in der global.asax Seite innerhalb der Session_Start
-Prozedur gesetzt und es bricht dort, so kann ich sagen, wenn es neu lädt und verliert alle Sitzungsvariablen in einem der ASPX-Seitencode hinter gesetzt.
Ich kenne einige häufige Ursachen wie wie der Ordner App_Data auf bestimmte Dateien oder Ordner zu schreiben, und die App-Pool zurückgeführt wird, aber ich kann nicht auf die Spur scheinen, warum dies geschieht, wenn Session_End
oder Application_End
nie Feuer und ich kann nicht einloggen der Grund, warum es endete.
Ich erbte dieses „Projekt“ und ich an dieser Stelle meinen Weg durch den Code „alata“ so Dank für Sie jede Hilfe können Sie mir zu diesem Thema geben kann ...
der Server IIS7, ASP ausgeführt wird. NET und der Code ist in VB.NET, ich habe auch 'sessionState mode = "InProc"' in der Datei web.config enthalten, um sicherzustellen, dass die Sitzungsprozeduren verwendet werden.
Dies ist Code VB im Session_Start
Verfahren
HttpContext.Current.Session.Item("SessionMessageView") = "no"
HttpContext.Current.Session.Item("DefaultMenuName") = "Default"
HttpContext.Current.Session.Item("RootVirtualPath") = "/"
HttpContext.Current.Session.Item("BlockerTested") = False
HttpContext.Current.Session.Item("BlockerTurnedOn") = False
HttpContext.Current.Session.Item("IsMobileBrowser") = False
Diese VB-Code in den beiden Session_End
und Application_End
Verfahren
Dim runtime As HttpRuntime = DirectCast(GetType(System.Web.HttpRuntime).InvokeMember("_theRuntime", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.[Static] Or System.Reflection.BindingFlags.GetField, Nothing, Nothing, Nothing), HttpRuntime)
If runtime Is Nothing Then
Return
End If
Dim shutDownMessage As String = DirectCast(runtime.[GetType]().InvokeMember("_shutDownMessage", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.GetField, Nothing, runtime, Nothing), String)
Dim shutDownStack As String = DirectCast(runtime.[GetType]().InvokeMember("_shutDownStack", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.GetField, Nothing, runtime, Nothing), String)
If Not System.Diagnostics.EventLog.SourceExists(".NET Runtime") Then
System.Diagnostics.EventLog.CreateEventSource(".NET Runtime", "Application")
End If
Dim log As New System.Diagnostics.EventLog()
log.Source = ".NET Runtime"
log.WriteEntry([String].Format(vbCr & vbLf & vbCr & vbLf & "_shutDownMessage={0}" & vbCr & vbLf & vbCr & vbLf & "_shutDownStack={1}", shutDownMessage, shutDownStack), System.Diagnostics.EventLogEntryType.[Error])
Wenn ich nur, warum die Session_End
Verfahren nicht feuern konnte herauszufinden ist, während die Session_Start
Prozedur mehrere Male ausgelöst wird, kann ich möglicherweise herausfinden, warum die Sitzung neu gestartet wird.
welche Sprache ? welcher Server? etwas Code? –
IIS7, ASP.NET VB, (und ich habe in der web.config) Ich habe eine Anzahl von Sitzungsvariablen in der Sitzung starten Verfahren wie folgt: –
Ich habe eine Sitzung festgelegt Variablen in der wie folgt aus: Sub Session_Start (ByVal Absender als Gegenstand, ByVal e As EventArgs) HttpContext.Current.Session.Item ("SessionMessageView") = "no" HttpContext.Current.Session.Item ("DefaultMenuName ") = "Default" HttpContext.Current.Session.Item (" RootVirtualPath ") = "/" ... End Sub Und dies ist der Session-Code Ende: Sub Session_End (ByVal Absender als Gegenstand, ByVal e As EventArgs) Dim Runtime als Httpruntime = ... End Sub Hoffnung, dass Sie genug geben gehen –