MVC 3 でセッションの期限切れチェックを処理できませんでした。最初は、セッションをチェックするために MVC フィルター (アクションの実行) を試みましたが、アクション フィルター内の request.session 変数にアクセスできませんでした。
そして、global.asaxでsession_Startメソッドを使用してみましたが、問題は、セッションが期限切れになると、session_startメソッドに移動しないことです
MVC 3 でセッションの期限切れチェックを処理できませんでした。最初は、セッションをチェックするために MVC フィルター (アクションの実行) を試みましたが、アクション フィルター内の request.session 変数にアクセスできませんでした。
そして、global.asaxでsession_Startメソッドを使用してみましたが、問題は、セッションが期限切れになると、session_startメソッドに移動しないことです
このような属性を作成できます
public class SessionExpireFilterAttribute:ActionFilterAttribute 
{
    public override void OnActionExecuting( ActionExecutingContext filterContext ) {
        HttpContext ctx = HttpContext.Current;
       //  check if session is supported
        if(ctx.Request.IsAuthenticated)
        {
            if (ctx.Session != null)
            {
                // check if a new session id was generated
                if (ctx.Session.IsNewSession)
                {
                    // If it says it is a new session, but an existing cookie exists, then it must
                    // have timed out
                    string sessionCookie = ctx.Request.Headers["Cookie"];
                    if (null == sessionCookie)
                    {
                        FormsAuthentication.SignOut();
                        const string loginUrl = @"~/Login/Login";
                        var rr = new RedirectResult(loginUrl);
                        filterContext.Result = rr;
                    }
                    if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") <= 0))
                    {
                        FormsAuthentication.SignOut();
                        const string loginUrl = @"~/Login/Login";
                        var rr = new RedirectResult(loginUrl);
                        filterContext.Result = rr;
                    }
                }
            }
        }
        else
        {
            ctx.Response.Redirect(@"~/Login/Login");
        }
        base.OnActionExecuting ( filterContext );
    }
}