Maneggiare timeout di sessione in asp.net utilizzando Javascript
-
20-09-2019 - |
Domanda
In sostanza voglio essere in grado di catturare quando un utente lascia il timeout della sessione e poi fa clic su qualcosa che finisce per causare un postback asincrono. Ho capito che se ho messo questo codice nel mio Session_Start (in Global.asax) allora posso prendere un postback che si è verificato durante un timeout di sessione:
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
Questo funziona bene. La mia domanda è, mi piacerebbe essere in grado di iniettare un po 'di javascript nella risposta e quindi chiamare Response.End () in modo che il resto dell'applicazione non viene terminare l'esecuzione. Il problema è che quando provo Response.Write("<script ... ")
seguito da Response.End()
poi javascript non ottiene scritto nel flusso di risposta. Sono sicuro che ci sono altri posti nel applicazione che posso tranquillamente scrivere Javascript per la risposta, ma non posso lasciare il resto dell'applicazione eseguire perché sarà errore quando si tenta di accedere gli oggetti di sessione.
Per riassumere: ho bisogno di iniettare javascript nella risposta in caso Session_Start in Global.asax
Nota: Ci si potrebbe chiedere perché non sto facendo questo in Session_End ... non usiamo le sessioni InProc e così Session_End non viene chiamato ... ma non è questo il punto ... volevamo solo chiarire perché sto facendo questo in Session_Start.
Soluzione
La scrittura al flusso di risposta al di fuori di un HttpHandler non è generalmente una buona idea; può funzionare in alcuni casi angolo, ma non è come le cose sono destinate a lavorare.
Avete considerato utilizzando una classe base pagina o un adattatore di pagina per fare questo? In questo modo, si avrebbe solo bisogno di una copia del codice, e potrebbe essere applicato a tutte le pagine oppure solo quelli selezionati.
Un'altra opzione sarebbe quella di utilizzare la riscrittura degli URL per reindirizzare la richiesta in ingresso ad una pagina che genera l'output dello script è necessario.