台灣最大程式設計社群網站
線上人數
1218
 
會員總數:239370
討論主題:185707
歡迎您免費加入會員
討論區列表 >> Blog精華文章 >> 網站線上人數
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
網站線上人數
價值 : 0 QP  點閱數:887 回應數:0

樓主

Mark Shu 版主
中級顧問
41831 589
14819 3772
發送站內信

捐贈 VP 給 Mark Shu

設計一個起始網頁 當作框架網頁 裡面使用frame切成上方的標題區 左方的menu區 右方的內容呈現區..將起框架網頁加入

Page.aspx
window.onbeforeunload = function() {
window.open('../KillProcess.aspx','');
}

當按下網頁右上方的[X] 或按下網頁上登出按鈕時 即會在網頁關閉前 觸發onbeforeunload 此時網頁會關閉 並開啟KillProcess.aspx

KillProcess.aspx  刪除Session後 在十分之一秒後 自行關閉
<script language ="javascript" type="text/javascript">
window.onload = function() { window.moveTo(-5,-5); window.resizeTo(0, 0); }
setTimeout("self.close()", 100);
</script>

KillProcess.aspx.cs 主要在刪除Session 並觸發Global.asax的Session_End事件
protected void Page_Load(object sender, EventArgs e)
{
Session.Clear();
Session.Abandon();
}

Global.asax  計算上線及離線人數
void Session_Start(object sender, EventArgs e)
{
// 啟動新工作階段時執行的程式碼
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}

void Session_End(object sender, EventArgs e)
{
// 工作階段結束時執行的程式碼。
// 注意: 只有在 Web.config 檔將 sessionstate 模式設定為 InProc 時,
// 才會引發 Session_End 事件。如果將工作階段模式設定為 StateServer
// 或 SQLServer,就不會引發這個事件。
Application.Lock();
Application["counter"] = (int)Application["counter"] - 1;
Application.UnLock();
}

此時在框架網頁的Header區 即可顯示目前線上人數Application["counter"]


本篇文章發表於2013-08-01 21:05
== 簽名檔 ==
markshu24.blogspot.tw
猛虎別在當道臥,困龍也有上天時。
春有百花,秋有月,夏有涼風,冬有雪,若無閒事在心頭,便是人間好時節。
一壺酌酒喜相逢,人生千百事,盡付笑談中。
既入真道,名為得道,雖名得道,實無所得,能悟之者,可傳聖道。

別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
[ 變換順序 ]   

回覆
如要回應,請先登入.