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();
}
}
}
};
}
}
}