• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[C#][ASP.NETMVC]處理SessionTimeout

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Session Timeout導回登入頁面這樣的功能大家應該並不陌生,

而處理Session  Timeout也有很多方式(也不一定要導回登入頁面),

可以使用client script固定時間輪詢Server(callback)不讓Session Timeout也是一種方法,

在MVC中個人較愛操作Action Filters(比較能展現MVC在設計上的特性~XD),

這裡自己紀錄一下。

 

新增自訂類別並繼承ActionFilterAttribute

public class CheckSessionFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting( ActionExecutingContext filterContext )
        {
            HttpContext httpcontext = HttpContext.Current;
            // 確認目前要求的HttpSessionState
            if( httpcontext.Session != null )
            {
                //確認Session是否為新建立
                if( httpcontext.Session.IsNewSession )
                {                     
                    //確認是否已存在cookies
                    String sessioncookie = httpcontext.Request.Headers[ "Cookie" ];
                    if( ( sessioncookie != null ) && ( sessioncookie.IndexOf( "ASP.NET_SessionId" ) >= 0 ) )
                    {
                        Logon( filterContext );                       
                    }
                }
            }          
            base.OnActionExecuting( filterContext );
        }
        private void Logon( ActionExecutingContext filterContext )
        {
            RouteValueDictionary dictionary = new RouteValueDictionary
                ( new
                {
                    controller = "Account",
                    action = "Logon",
                    returnUrl = filterContext.HttpContext.Request.RawUrl
                } );
            filterContext.Result = new RedirectToRouteResult( dictionary );
        }        
    }

Controller

public ActionResult Index()
        {
            Session[ "mytime" ] = DateTime.Now.ToString();
            ViewData[ "Message" ] = Session[ "mytime" ] as String;  
            return View();
        }
        [CheckSessionFilterAttribute]//自訂Action Filters
        public ActionResult About()
        {
            return View();
   }

Web.config

設定2分鐘Session timeout。

結果:

2分鐘過後點擊About。

導回登入頁面。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#标准命名规范发布时间:2022-07-10
下一篇:
C#读取txt文件时中文乱码发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap