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