有很多人都 都為 直接關(guān)閉IE 時(shí) 不執行Session_End事件 煩惱 (并沒(méi)有 -1 ) ,導致統計人數不準確 , 怎么才能在關(guān)閉IE時(shí) 執行Session_End事件呢?
首先了解 在什么時(shí)候 才會(huì )執行 Session_End事件 1、一般是超時(shí)的時(shí)候 2、 或者 執行 Session.Abandon()事件的時(shí)候; 就會(huì )執行Session_End事件
那我們就讓在 關(guān)閉IE時(shí) 執行 Session.Abandon()事件
我寫(xiě)在了 主框架(DefaultByTreeView.aspx)里 當這個(gè)框架關(guān)閉時(shí) 我的程序也就關(guān)閉了 用JavaScript 來(lái)實(shí)現
<script type="text/javascript" language="Javascript">
function window.onbeforeunload()
{
if (event.clientX>document.body.clientWidth && event.clientY <0 ||event.altKey)
{
// window.event.returnValue="確定要退出本頁(yè)嗎?";
window.location.href = "Default_Session.aspx";
//新建 一個(gè)空白 頁(yè)面 Default_Session.aspx 在Page_Load事件里寫(xiě) Session.Abandon();
}
}
function window.onunload()
{
if (event.clientX < 0 && event.clientY < 0)
{
window.location.href = "Default_Session.aspx"; // 或者調用Response.Redirect("Logout.aspx")
}
}
</script>
這樣 就OK了 還有個(gè)問(wèn)題是我在數據庫里設置的 用戶(hù)數 是 1 當 一個(gè)用戶(hù)在線(xiàn) 而有一個(gè)用戶(hù)登錄時(shí) 則提示"超出限制用戶(hù)數"(自己寫(xiě)個(gè)判斷吧Application["online"].ToString() 跟 數據庫里 設置的那個(gè) 限制 用戶(hù)數的 數量比較) 如果已經(jīng)登陸了一個(gè)用戶(hù) 我就肯定登陸不進(jìn)去了 但是(這個(gè)時(shí)候 執行 Session_Start 事件了 Application["online"]也 + 1 了 ) 我關(guān)閉的時(shí)候 卻沒(méi)有 執行 Session_End事件 也就是沒(méi)有 -1 所以 應該在 登陸頁(yè)面 也寫(xiě)上 DefaultByTreeView.aspx 頁(yè)面script的 window.onunload() ,window.onbeforeunload() 這兩個(gè)方法
當然 我的asp.net程序 是由登陸頁(yè)面 跳轉到 主框架的DefaultByTreeView.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。