以下是引用片段
function windowonbeforeunload()
{
if (eventclientX>documentbodyclientWidth && eventclientY<||eventaltKey){
windowopen(logoutASPx);
}
}
由於onbeforeunload方法在浏覽器關閉刷新頁面調轉等情況下都會被執行所以需要判斷是點擊了關閉按鈕或是按下Alt+F時才執行真正的關閉操作
然後在logoutaspx的Page_Load中寫和Session_End相同的方法同時在logoutaspx中加入事件onload=javascript:windowclose()
但是這樣還是有問題javascript在不同的浏覽器中可能有不同的行為還有就是當通過文件>關閉時沒有判斷到
使用XMLhttp方法(這種方法測試下來沒有問題)
在每個頁面中加入如下的javascript(這些javascript也可以寫在共通裡每個頁面引入就可以了)
以下是引用片段
var x=;
function myRefresh()
{
var httpRequest = new ActiveXObject(microsoftxmlhttp);
httpRequestopen(GET testaspx false);
httpRequestsend(null);
x++;
if(x<) //次也就是Session真正的過期時間是分鐘
{
setTimeout(myRefresh()*); //秒
}
}
myRefresh();
在webconfig中設置
以下是引用片段
<sessionState mode=InProc timeout=></sessionState>
testaspx頁面就是一個空頁面只不過需要在Page_Load中加入
以下是引用片段
ResponseExpires = ;
保證不使用緩存每次都能調用到這個頁面
原理就是設置Session的過期時間是一分鐘然後在每個頁面上定時每秒連接一次測試頁面保持Session有效總共連次也就是分鐘如果分鐘後用戶還沒有操作Session就會過期當然如果用戶直接關閉浏覽器那麼一分鐘後Session也會過期這樣就可以滿足要求了
[] []
From:http://tw.wingwit.com/Article/program/net/201311/15530.html