关于asp.net 监测Session是否过期的问题
2015-05-27 00:00
162 查看
如果是在aspx 文件中监测session 是否过期的话,我们可以写个从Page类继承的BasePage类,然后每个aspx对应的处理类继承BasePage 就可以了。
也可以重写OnInit()方法来判断Session情况。
如果在ajax调用中检查session是否失效上面的方法就不灵了。
如果 是ajax + ashx 的方法来实现的异步调用话:
这样我们可以这样来实现检查session是否失效:
但如果用的是ajaxpro 的方式实现异步调用呢?或是ajax + ashx 和Ajaxpro 都用呢?
看文章有写可以用重写IHttpModule的方法来实现
然后在web.config 中添加
在context_AcquireRequestState进行session判断,但所有的Ajaxpro的请求都是通过下面的
中的prototype.ashx、core.ashx、converter.ashx 和App_web_mdrbqjr9.ashx 来实现的,这样就很难过滤。
一劳永逸的方法还未实现,研究中。。。。。。。。。。。
public class BasePage:Page { public BasePage() { Load += new EventHandler(BasePage_Load); } private void BasePage_Load(object sender, EventArgs e) { UserInfo userInfo = Session["UserInfo"] as UserInfo; if (userInfo == null) { //跳转到首页 //Response.Redirect("~/Default.aspx"); Server.Transfer("~/Default.aspx"); } } }
也可以重写OnInit()方法来判断Session情况。
如果在ajax调用中检查session是否失效上面的方法就不灵了。
如果 是ajax + ashx 的方法来实现的异步调用话:
// Find the URL in the link right next to us, then fetch the data $.ajax({ url: "../test.ashx", type: "GET", dataType: "json", success: onDataReceived });
这样我们可以这样来实现检查session是否失效:
/// <summary> ///ashx 文件对应的基类 用于判断用户是否登录(Session是否过期) /// </summary> public class BaseHandlerClass:IHttpHandler,IRequiresSessionState { public void ProcessRequest(HttpContext context) { if (context.Session == null) { //context.Response.StatusCode = 405; //context.Response.End(); //跳转到首页 context.Response.Redirect("~/Default.aspx"); } if (context.Session["UserInfo"] == null) { //context.Response.StatusCode = 405; //context.Response.End(); //跳转到首页 context.Response.Redirect("~/Default.aspx"); } OnLoad(context); } public bool IsReusable { get { return false; } } /// <summary> /// 代码实现 /// </summary> /// <param name="context"></param> public virtual void OnLoad(HttpContext context) { //子类可以重写此函数来实现业务处理 } } 然后ashx 对应的处理类继承上面的类并重写OnLoad函数来处理具体业务。
但如果用的是ajaxpro 的方式实现异步调用呢?或是ajax + ashx 和Ajaxpro 都用呢?
看文章有写可以用重写IHttpModule的方法来实现
namespace JudgeSessionOutTime { public class Module: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.Request.RawUrl.EndsWith("aspx") || app.Context.Request.RawUrl.EndsWith("ashx")) { if (app.Context.Request.RawUrl.EndsWith("Default.aspx") || app.Context.Request.RawUrl.EndsWith("Login.aspx")) return; if (app.Context.Session["UserInfo"] == null) { app.Response.Write("<script>alert('session到期!');</script>"); } } } } }
然后在web.config 中添加
<httpModules> <!--重写IHttpModule类,需要配置的信息--> <!--<add name="JudgeSessionOutTime" type="JudgeSessionOutTime.Module"/>--> <!--type后面是命名空间.类名--> </httpModules>
在context_AcquireRequestState进行session判断,但所有的Ajaxpro的请求都是通过下面的
<script src="/HeatNetworkInfoPlatformWeb/ajaxpro/prototype.ashx" type="text/javascript"> <script src="/HeatNetworkInfoPlatformWeb/ajaxpro/core.ashx" type="text/javascript"> <script src="/HeatNetworkInfoPlatformWeb/ajaxpro/converter.ashx" type="text/javascript"> <script src="/HeatNetworkInfoPlatformWeb/ajaxpro/Login,App_Web_mdrbqjr9.ashx" type="text/javascript">
中的prototype.ashx、core.ashx、converter.ashx 和App_web_mdrbqjr9.ashx 来实现的,这样就很难过滤。
一劳永逸的方法还未实现,研究中。。。。。。。。。。。
相关文章推荐
- ASP.NET Session丢失问题解决方案总结及判断Session是否过期【转载】
- ASP.NET Session丢失问题解决方案总结及判断Session是否过期
- ASP.NET Session丢失问题解决方案总结及判断Session是否过期【转载】
- ASP.NET Session丢失问题解决方案总结及判断Session是否过期
- 关于ASp.net中的session失效问题的解决办法之一
- asp.net 判断session是否过期
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- 关于asp.net Session丢失问题的总结
- Asp.net MVC 、Extjs 解决Session过期跳到登录界面的问题
- 关于asp.net Session丢失问题的总结
- ASP.NET关于Session_End触发与否的问题
- ASP.NET 4.0 Session过期 一个奇怪的问题
- ASP.NET多次点击提交按钮以及Session超时和丢失过期问题
- ASP.NET MVC中利用AuthorizeAttribute实现访问身份是否合法以及Cookie过期问题的处理
- 关于ASP.NET 2.0的目录结构变化导致Session丢失的问题
- 关于asp.net Session丢失问题的总结 【转】
- 关于asp.net Session丢失问题的总结
- 关于asp.net Session丢失问题的总结
- Asp.Net里关于Session过期跳转页面的一些小技巧
- ASP.NET MVC中利用AuthorizeAttribute实现访问身份是否合法以及Cookie过期问题的处理之IIS WebSite anonymous Authentication