欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

asp.net 判断session是否过期

程序员文章站 2022-03-04 12:49:09
...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;

/// <summary>
/// Summary description for Module
/// </summary>

//1.继承IHttpModule类,实现接口成员
namespace JudgeSessionOutTime
{
    public class Module : IHttpModule, IRequiresSessionState
    {
        public void Dispose()
        {
        //   throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            //原因:这个事件时,Session尚未创建。要先指定类型在判断地址栏是否存在
            //context.BeginRequest += new EventHandler(context_BeginRequest);
            context.AcquireRequestState += (obj, e) =>
            {
                var app = (HttpApplication)obj;
                var url = app.Request.RawUrl;
                //还要先判断下请求类型
                if (url.IndexOf(".aspx") > 0)
                {
                    //判断非UserLogin请求 防止进入死循环(此网页包含重定向循环)
                    if (url.IndexOf("Login.aspx") < 0)
                    {
                        if (url.IndexOf("GetValidateCode") > 0 || url.IndexOf("UserRegister") > 0 || url.IndexOf("notify_url") > 0 || url.IndexOf("return_url") > 0)//排除过滤选项
                        {
                        }
                        else if (app.Context.Session["admin"] == null)
                        {
                           //app.Response.Redirect("../Login.aspx", false);

                            string loginURl ="/Login.aspx";
                          //  Utility.Jscript.alert("本次登录已经超时,请重新登录系统");
                            app.Context.Response.Write(" <script>top.location='" + loginURl + "' ;</script>");
                            app.Context.Response.End();
                        }
                    }
                }
            };
        }
    }
}