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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top