Tôi có một ứng dụng ở khoảng 20 http generic handler
được sử dụng cho ajax call
.
Tôi đã sử dụng IReadOnlySessionState
để truy cập phiên trong trình xử lý của mình. Mọi thứ đều hoạt động tốt.
Xử lý thời gian chờ của phiên trong trình xử lý http chung
Nhưng khi phiên hết hạn, trình xử lý của tôi sẽ trả về một số html khi chuyển hướng đến trang mặc định và html của trang mặc định được gửi lại trong phản hồi.
Để khắc phục sự cố này.
Tôi đã kiểm tra các biến session trong xử lý và nếu nó là null tôi đã viết
context.Response.Write("logout")
Và tôi kiểm tra trong jQuery ajax thời tiết nó là logout hoặc bất cứ điều gì khác.
$.ajax({
url: "myhandler.ashx",
contentType: "application/json; charset=utf-8",
success: function (data) { checklogout(data); $("#loading").hide(); },
error: function() { $("#loading").hide(); },
async: false
});
Nếu đăng xuất thì tôi đã sử dụng vị trí để chuyển hướng đến trang đăng nhập.
Tôi đang sử dụng form-authentication
để xác thực người dùng.
Có cách nào tốt hơn để kiểm tra và chuyển hướng đến trang đăng nhập bằng cách sử dụng cuộc gọi jquery-ajax hay không.
Nó có lẽ sẽ tốt hơn để trả lại [mã trạng thái HTTP] thích hợp (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html), chẳng hạn như * 401 Trái phép * khỏi trình xử lý của bạn (và có thể tạo một trình xử lý cơ sở duy nhất để bạn không lặp lại logic). Bạn có thể tìm giá trị này trong các tùy chọn AJAX trung tâm của bạn ('$ .ajaxsetup'), vì vậy mã để kiểm tra chỉ cần đi ở một nơi. Có phải là dọc theo dòng của những gì bạn đang tìm kiếm? –