21.5 Web Application Session has expired
If you get this message, the Server Module session has expired but the failure has not been captured on the client.
This example is based on XDemoWebSessions. If you use the following code, the Fatal session error will not occur because the #TestSession.Failed event is captured and processed.
Evtroutine Handling(#Test.Click)
#Com_owner.TestSession
Endroutine
Mthroutine Name(TestSession)
Define_Com Class(#xDemoSessionServices.TestSessionState) Name(#TestSession)
#io$sts := ""
#Test.Caption := "Testing Session"
#TestSession.ExecuteAsync( #Io$sts )
Evtroutine Handling(#TestSession.Completed)
#Com_owner.UpdateSession( True )
#Test.Caption := "Test (Success)"
Endroutine
Evtroutine Handling(#TestSession.Failed) Reason(#Reason) Handled(#Handled)
#Handled := True
Case (#Reason)
When (= Unknown)
#Test.Caption := "Test (Failed)"
When (= SessionInvalid)
#Test.Caption := "Test (Session Invalid)"
Endcase
#Com_owner.UpdateSession( False )
Endroutine
If you modify the code to remove the handling of the #TestSession.Failed the above message will be produced when the session expires.
Evtroutine Handling(#Test.Click)
#Com_owner.TestSession
Endroutine
Mthroutine Name(TestSession)
Define_Com Class(#xDemoSessionServices.TestSessionState) Name(#TestSession)
#io$sts := ""
#Test.Caption := "Testing Session"
#TestSession.ExecuteAsync( #Io$sts )
Evtroutine Handling(#TestSession.Completed)
#Com_owner.UpdateSession( True )
#Test.Caption := "Test (Success)"
Endroutine
Evtroutine Handling(#TestSession.Failed) Reason(#Reason) Handled(#Handled)
* nothing processed here
Endroutine