2

アプリケーションでユーザーの時間を追跡しており、ユーザーがログアウトするか、セッションがタイムアウトしたときに、ユーザーを記録したいと考えています。ログアウトは問題なく、セッション タイムアウトは約 95% の確率で機能します。しかし、5% の時間で、Session_End が呼び出されていないか、クロック アウトのためにユーザー ID をデータベースに渡すためにユーザーのセッションを失っています。

以下は、Global.asax の私のコードです。

     protected void Session_End(object sender, EventArgs e)
        {
            var currentUser = Session[Constants.SessionKey_User] as User;

            if (currentUser != null)
            {
                //passes the user id to a db proc
                Utilities.LogTimeTrackingEvent(currentUser.UserId, Constants.TimeTrackingEntryTypes.Stop);   
             }         
        }

すべてのアクティブなセッションについて 10 分ごとに Web サーバー (IIS 7) をポーリングし、それをデータベースに格納されているセッション ID と比較する Web サービスをセットアップすることを考えています。Web サーバーからのリストにないすべてのセッション ID について、それらのユーザーを退出させます。それはもっともらしく、合理的なアプローチのように聞こえますか? ありがとう。

4

0 に答える 0