如果您正在使用ASP.NETMVC-您不需要額外的HTTP處理程序和web.config文件的一些修改。您所需要的只是在Home/公共控制器中添加一些簡單的操作:
[HttpPost]public JsonResult KeepSessionAlive() {
return new JsonResult {Data = "Success"};}
,編寫一段類似于此的JavaScript代碼(我已將其放入站點的一個JavaScript文件中):
var keepSessionAlive = false;var keepSessionAliveUrl = null;function SetupSessionUpdater(actionUrl) {
keepSessionAliveUrl = actionUrl;
var container = $("#body");
container.mousemove(function () { keepSessionAlive = true; });
container.keydown(function () { keepSessionAlive = true; });
CheckToKeepSessionAlive();}function CheckToKeepSessionAlive() {
setTimeout("KeepSessionAlive()", 300000);}function KeepSessionAlive() {
if (keepSessionAlive && keepSessionAliveUrl != null) {
$.ajax({
type: "POST",
url: keepSessionAliveUrl,
success: function () { keepSessionAlive = false; }
});
}
CheckToKeepSessionAlive();}
,并通過調(diào)用JavaScript函數(shù)初始化此功能:
SetupSessionUpdater('/Home/KeepSessionAlive');
請注意!我只為授權(quán)用戶實現(xiàn)了此功能(在大多數(shù)情況下,沒有理由讓來賓保持會話狀態(tài)),而保持會話狀態(tài)活動的決定不僅基于-是否打開瀏覽器,而且授權(quán)用戶必須在站點上進行一些活動(移動鼠標(biāo)或鍵入某個鍵)。