簡體   English   中英

Application_End注銷用戶在global.asax中

[英]Application_End Logout Users in global.asax

我想問一下我可以在Application_End中注銷用戶嗎? ,我知道Application_End何時調用Application_End global.asax

但我只是想知道讓所有用戶在Application End注銷是正確的,我只想輸入用戶的注銷日期時間。

    void Application_End(object sender, EventArgs e)
    {
        try
        {
            var LisLoginUsers = db.USER_LOGIN.Where(z => z.LOGOUT_DATETIME == null).ToList();
            if (LisLoginUsers.Count != 0)
            {
                for (int i = 0; i < LisLoginUsers.Count; i++)
                {
                    LisLoginUsers[i].LOGOUT_DATETIME = System.DateTime.Now;
                    db.SaveChanges();

                }
            }
        }
        catch (Exception msg)
        {
            ExceptionLogging.SendErrorToText(msg);
            Response.Redirect("/Account/Error/");

        }
    }

不,你不能使用Application_End在真實網站上錄制唱歌。

由於Application_End事件與任何請求無關,因此您無法執行某些操作 - 您無法對特定用戶或某處的重定向響應執行操作(因為沒有請求/響應開始)。

實際上,您可以清除或批量更新數據庫中的信息,但它無法實現“輸入用戶的注銷日期時間”的實際目標。

應用程序關閉與任何用戶行為無關 - 它僅涉及因任何原因(即由於更新或不活動而重新啟動站點)而停止服務器端代碼。 從用戶的角度來看,他們仍然可能正在查看頁面並認為自己“已登錄”。

如果您有一個包含多個服務器的非平凡站點,則每個服務器重新啟動IIS進程時也沒有相關性,使得Application_End完全不適合“用戶注銷”,因為一個服務器可以在其他重新啟動時主動為請求提供服務。

最好的辦法是明確地(即登錄后40分鍾)或滑動到期時超時用戶會話,方法是更新頁面上每個請求/心跳AJAX ping的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM