Ich habe eine Anwendung, wo etwa 20 http generic handler
für ajax call
verwendet werden.
Ich habe IReadOnlySessionState
für den Zugriff auf die Sitzung in meinem Handler verwendet. Alles funktioniert gut.
Handle Session Timeout in generischen http-Handler
Wenn die Sitzung abläuft, gibt mein Handler jedoch etwas html zurück, da es auf die Standardseite umleitet und die HTML-Seite der Standardseite in der Antwort zurückgesendet wird.
Um dieses Problem zu beheben.
Ich habe die Session-Variable in der Prozedur überprüft und wenn es null die ich habe
context.Response.Write("logout")
Und ich überprüfen, in jQuery Ajax-Wetter ist es logout oder irgendetwas anderes.
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data) { checklogout(data); $("#loading").hide(); },
error: function() { $("#loading").hide(); },
async: false
});
Wenn es Logout wird dann ich Standort verwendet haben, um zu umleiten Seite einzuloggen.
Ich benutze form-authentication
Benutzer zu authentifizieren.
Gibt es einen besseren Ansatz für die Überprüfung und Umleitung auf die Anmeldeseite mit jquery-ajax Aufruf.
Es wäre wahrscheinlich besser, um einen ordnungsgemäßen [HTTP-Statuscode] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) wie * 401 Unauthorized * von Ihrem Handler zurückzugeben (und vielleicht einen einzelnen Basishandler zu erstellen, damit du wiederholst die Logik nicht). Sie können diesen Wert in Ihren zentralen AJAX-Optionen ('$ .ajaxsetup') suchen, damit der zu überprüfende Code nur an einer Stelle abläuft. Geht das nach dem, was Sie suchen? –