Ho un'applicazione in cui sono utilizzati circa 20 http generic handler
per ajax call
.
Ho usato IReadOnlySessionState
per accedere alla sessione nei miei gestori. Tutto funziona correttamente.
Gestire il timeout della sessione nel gestore HTTP generico
Ma quando la sessione scade il gestore restituisce alcuni html mentre reindirizza alla pagina predefinita e nella pagina di risposta viene inviata la pagina HTML di default.
Per risolvere questo problema.
Ho controllato la variabile di sessione nel gestore e se è nullo l'ho scritto
context.Response.Write("logout")
E ho il check-in jQuery Ajax tempo è il logout o qualsiasi altra cosa.
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data) { checklogout(data); $("#loading").hide(); },
error: function() { $("#loading").hide(); },
async: false
});
Se è il logout quindi ho usato posizione per reindirizzare alla pagina di login.
Sto usando form-authentication
per autenticare l'utente.
C'è un approccio migliore per il controllo e il reindirizzamento alla pagina di accesso utilizzando la chiamata jquery-ajax.
Probabilmente sarebbe meglio per restituire un appropriato [codice di stato HTTP] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html), come * 401 Non autorizzato * dal gestore (e magari creare un unico gestore di base in modo che non ripeti la logica). Puoi cercare questo valore nelle tue opzioni AJAX centrali ('$ .ajaxsetup'), quindi il codice da controllare deve solo andare in un posto. È sulla falsariga di ciò che stai cercando? –