Việc giữ cho 1 session sống, hay Session Timeout tự động tăng và không bị chết session trong web MVC khá quan trọng, Auto Keep Session Alive Timeout in MVC, tự động giữ thời gian sống session MVC, Heartbeat to Keep Session Alive in ASP.NET MVC. Bạn rất bực mình khi đang thao tác viết bài thì bị mất session, cách xử lý code rất đơn giản như sau: Cách 1: Bước 1: Tại HomeController.cs bạn thêm đoạn code sau: (hoặc ở bất kỳ controller nào bạn muốn xử lý gia hạn keep session Alive) Mã: [HttpPost] public JsonResult KeepSessionAlive() { return new JsonResult { Data = "Success" }; } Bước 2: Tại footer.cshtml hoặc Layout.cshtml hoặc ở nơi bạn muốn chèn code javascript giữ session hoạt động truy vấn vào KeepSessionAlive thì add code sau vào: (chèn phía sau thư viện jquery nhé) HTML: <script type="text/javascript"> //Có thể tác đoạn đầu này bỏ vào file .js sau đó load ra cũng được. SessionUpdater = (function () { var clientMovedSinceLastTimeout = false; var keepSessionAliveUrl = null; var timeout = 5 * 1000 * 60; // 5 phút xử lý load lại session 1 lần function setupSessionUpdater(actionUrl) { // store local value keepSessionAliveUrl = actionUrl; // setup handlers listenForChanges(); // start timeout - it'll run after n minutes checkToKeepSessionAlive(); } function listenForChanges() { $("body").one("mousemove keydown", function () { clientMovedSinceLastTimeout = true; }); } // fires every n minutes - if there's been movement ping server and restart timer function checkToKeepSessionAlive() { setTimeout(function () { keepSessionAlive(); }, timeout); } function keepSessionAlive() { // if we've had any movement since last run, ping the server if (clientMovedSinceLastTimeout && keepSessionAliveUrl != null) { $.ajax({ type: "POST", url: keepSessionAliveUrl, success: function (data) { // reset movement flag clientMovedSinceLastTimeout = false; // start listening for changes again listenForChanges(); // restart timeout to check again in n minutes checkToKeepSessionAlive(); }, error: function (data) { console.log("Error posting to " & keepSessionAliveUrl); } }); } } // export setup method return { Setup: setupSessionUpdater }; })(); </script> <script type="text/javascript"> // cài đặt update session KeepSessionAlive mỗi khi có người truy cập web, bạn thay controller Home bằng controller của bạn gắn mã. SessionUpdater.Setup('@Url.Action("KeepSessionAlive","Home")'); </script> Cách 2: Nếu bạn muốn mỗi khi gần hết session sẽ hiện thông báo yêu cầu người dùng chọn ở lại tiếp tục kết nối, hay thoát ra kết nối lại như hình thì bạn sử dụng javascript của Bootstrap Session Timeout cũng khá OK. Link tham khảo: jqueryscript.net/other/Configurable-Session-Timeout-URL-Redirect-Plugin-Bootstrap.html
Trời cái mình không biết làm từ rất lâu rồi, giờ mới thấy admin chỉ, chắc là 100% thành công rồi, mình cái vô web mình ngay, toàn bị mất session tức ghê lun. Cảm ơn ad