• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    几种判断asp.net中session过期方法的比较

    方法一:最麻烦也是最容易想到的方法,在每个页面的page_load()方法里面判断:

    复制代码 代码如下:

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    if (Session["username"] != null)
                    {

                        //登陆成功的情况
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "script>alert('登录成功!')/script>");
                    }
                    else
                    {
                        //过期,重新登录
                        Response.Redirect("LoginForm.aspx");

                    }
                }
            }

        缺点:代码冗余,重复写判断session代码。

     

    方法二:重写HttpModule中的Init()方法,然后判断session过期情况。

      1.新建一个继承IHttpModule接口的类Module ,让Module类实现IHttpModule接口成员。

      2.在Init()方法中对Context进行注册AcquireRequestState事件。

      3.在AcquireRequestState方法中实现判断session代码。

    复制代码 代码如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    namespace JudgeSessionOutTime
    {
        //1.继承IHttpModule类,实现接口成员
        public class Module:IHttpModule
        {
            #region IHttpModule 成员

            public void Dispose()
            {
                throw new NotImplementedException();
            }

            //2.在Init()方法中对Context进行注册AcquireRequestState事件。
            public void Init(HttpApplication context)
            {
                context.AcquireRequestState+=new EventHandler(context_AcquireRequestState);
            }

            //3.完善AcquireRequestState方法,然后判断session过期
            public void context_AcquireRequestState(object sender, EventArgs e)
            {
                HttpApplication app = (HttpApplication)sender;

                if (app.Context.Session["username"] == null)
                {
                    app.Response.Write("script>alert('session到期!');/script>");
                }
            }

            #endregion
        }
    }

    4.配置web.config文件,在system.web>中添加以下代码

    复制代码 代码如下:

    httpModules>

            !--重写IHttpModule类,需要配置的信息-->
            add name="demo" type="JudgeSessionOutTime.Module"/>
            !--type后面是命名空间.类名-->

    /httpModules>

      优点:效率高,代码无冗余,一次配置,全程受用。

      原理:实现IHttpModule接口的类Module是在执行页面之前就会执行。即:在page_load()事件执行之前,就会执行Module,然后执行判断session方法,未过期,继续执行,过期,就会执行相应操作,就不用执行page_load()页面的方法了。

      感悟:说实话,对于这点,在做网站登录,然后判断用户名方面,我觉得不太适合,因为,一旦程序开始加载,就会执行module类方法,那时候session还是空,所以无论怎样,都不会放下走,一直停在登录界面(个人见解,欢迎各位拍砖!)

     

    方式三:重写继承page的OnInit()虚方法,在需要的界面上,继承这个类。

      1.新建继承page类的类JudgeSession,实现接口成员。

      2.重写OnInit()方法,判断session情况。

      3.在需要判断session过期情况的页面上,继承该JudgeSession类,而不是page类,从而实现效果。

    复制代码 代码如下:

    //JudgeSession 类

    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    namespace JudgeSessionOutTime
    {
        public class JudgeSession : System.Web.UI.Page
        {
            protected override void OnInit(EventArgs e)
            {
                if (Session["username"] == null)
                {
                    Response.Write("session过期!");
                }
                else
                {
                    Response.Write("session没有过期,用户名:"+Session["username"].ToString());
                }
            }

        }
    }

      优点:方法灵活,代码重用率高。在需要判断session的页面继承JudgeSession类,不需要的页面,继承page类即可。

    您可能感兴趣的文章:
    • asp.net BasePage类+Session通用用户登录权限控制
    • IIS服务器中 ASP.NET State Service 开启后 Session 仍容易丢失的问题终极解决办法
    • ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码
    • 在ASP.NET中,设置Session的过期时间的方法
    • ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法
    • asp.net中Session缓存与Cache缓存的区别分析
    • Asp.net在ashx文件中处理Session问题解决方法
    • ASP.NET中在一般处理程序中使用session的简单介绍
    • ASP.NET ASHX中获得Session的方法
    • ASP.NET 使用application与session对象写的简单聊天室程序
    • ASP.NET在底层类库中获取Session C#类中获取Session
    上一篇:基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍
    下一篇:关于asp.net 自定义分页控件
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    几种判断asp.net中session过期方法的比较 几种,判断,asp.net,中,session,