【转】ASP.NET之 关于触发Global.asax Session_End事件的经验
| 在做asp.net編程開發(fā)的時候,我遇見這樣的問題,一個用戶只能在一臺機器上登錄, 如果有用戶在其他機器上登錄,系統(tǒng)將提示該用戶已經(jīng)登錄!當前登陸非法!我的做法是: 用Application變量保存已經(jīng)Login的用戶信息,當Session_Start的時候,在Global.asax 文件里寫Session_Start事件響應函數(shù),記錄登錄用戶!當用戶Logout的時候,在Session_End 事件里,將Application變量中的用戶信息做一個休正,即:清除SessionEnd的用戶信息。 問題出現(xiàn)了!Session_End無法執(zhí)行???為什么呢?后來看了幾篇文章,做了試驗,得出以下 結果,要讓Session_End事件響應,需要做以下工作:???????? 首先在web.config文件中需要有以下設置: <sessionState Session_End只在mode="inProc"模式下觸發(fā),timeout決定該事件的觸發(fā)時間, 一般情況下,timeout是指Session失效的時間,我在自己設計的asp.net應用系統(tǒng)中, 使用Form校驗方式,不需要Session來判斷用戶是否登錄,所以設置timeout=1分鐘, 不會影響正常操作,但是如果用戶設計的系統(tǒng)使用Session來保存用戶登錄信息, 設置timeout=1,那么打開瀏覽器后,當用戶在1分鐘內(nèi)不在該瀏覽器上進行操作, Session就會失效,這可能導致系統(tǒng)使用的不正常!對于一般用戶而言,對著屏幕 看1分鐘后,又要重新登陸一次,是個十分惡心的事情! ? ?????????? 因此,如果使用Session來保存用戶登錄信息,建議采用其他方式! 比如在每個Page上做一個onunload事件響應函數(shù),如:oncloseIE(),當瀏覽器關閉的時候, oncloseIE()執(zhí)行,在oncloseIE函數(shù)里使用ajax方式,調(diào)用后臺的server端函數(shù),執(zhí)行 Session.Abandon(); 這樣的方法將是最直接,最及時的Session End處理! |
總結
以上是生活随笔為你收集整理的【转】ASP.NET之 关于触发Global.asax Session_End事件的经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:许洪波,男,博士,中国科学院计算技
- 下一篇: 《大数据》期刊“农业大数据”专刊征文通知