Mam aplikację, w której około 20 http generic handler
jest używanych do ajax call
.
Użyłem IReadOnlySessionState
do uzyskiwania dostępu do sesji w moich modułach obsługi. Wszystko działa poprawnie.
Limit czasu sesji obsługi w ogólnej procedurze obsługi http
Ale po wygaśnięciu sesji mój przewodnik zwraca jakiś html podczas przekierowywania do strony domyślnej, a html strony domyślnej jest odsyłany w odpowiedzi.
Aby rozwiązać ten problem.
Sprawdziłem zmiennej sesji w przewodnika i jeśli jest null Pisałem
context.Response.Write("logout")
I sprawdzić w jQuery pogody ajax to wylogowania lub cokolwiek innego.
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data) { checklogout(data); $("#loading").hide(); },
error: function() { $("#loading").hide(); },
async: false
});
Jeśli jest to wylogowanie, użyłem lokalizacji do przekierowania na stronę logowania.
Do uwierzytelniania użytkownika używam form-authentication
.
Czy istnieje lepsze podejście do sprawdzania i przekierowywania do strony logowania za pomocą wywołania jquery-ajax.
To będzie prawdopodobnie lepiej aby zwrócić prawidłowy [kod statusu HTTP] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html), na przykład * 401 Unauthorized * z programu obsługi (i może utworzyć pojedynczy handler bazowy, aby nie powtarzasz logiki). Możesz poszukać tej wartości w swoich centralnych opcjach AJAX ('$ .ajaxsetup'), więc kod do sprawdzenia wystarczy, aby przejść w jednym miejscu. Czy to na wzór tego, czego szukasz? –