在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的页面,在不同的WEB路径下,所以转到登陆页面的URL都不同,每个页面都要调用和设置登陆页面路径,所以实际应用就放弃了这一想法后来考虑到不如写一个检查Session失效的页面,由客户端每一秒都刷新一下,就可以在一个页面中调用,但通过FRAME嵌入该ASPX老时有请求发出,不太好看,虽然该页面是隐藏的.再后来,想想,就用一个页面,使用无刷新技术,去请求该失效Session的页面就可以了,此处的无刷新技术使用了xmlhttp对象,没有使用WEBService技术.(由于客户的BS系统,使用FRAME框架,最上层的页面是显示软件名称,用户登陆信息的,所以调用就放在该页面中).

  让我们来看看代码,主要是客户端的JavaScript脚本程序  webjx.com

<script language="javascript">
   var idx=0;
   function ChkSession()
   {
    var Http = new ActiveXObject("Microsoft.XMLHTTP");
    Http.open("GET","ChkSessionOut.aspx",false); //检查Session失效的页面
    Http.send();
    var str = Http.responseText;//执行ASPX后的返回结果
    //idx++
    //document.all("ConvertResult").innerHTML = str+idx;
    if(str=="notnull")
    {
     //alert(str); 网页教学网 
    }
    else
    {
     alert("会话值跟踪时间超时,请重新登录...");//这段代码一直没有运行,往下看,你就知道了
     location.href = "longin.aspx";
    }
    window.setTimeout(‘ChkSession()‘, 1000 );//每一秒钟,请求一次ChkSessionOut.aspx
   }
  </script>

  这段CODE,我放在<HEAD></HEAD>标签之间,然后在BODY加载时,调用该函数,如下:

<BODY onload="ChkSession();">

ChkSessionOut.aspx.cs的代码如下ChkSessionOut.aspx文件中的HTML标签全部被我删除,这样一来执行下面的代码,就只有结果的输出了

private void Page_Load(object sender, System.EventArgs e)
  {
   if(Session["sUserID"]==null)
   {
    Response.Write("isnull");
    return;
   }
   else
   {
    Response.Write("notnull");
    return;
   }  
  }

为了测试以上程序,我将WEB.Config的内容更改,将SESSION设置段,改成一分钟后失效WEB.Config文件的一部分,设置一分钟后失效SESSION的地方,如下:

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="1"/>

www.webjx.com

  然后我运行代码,我特地在原来的IE上,使用菜单新打开一个IE窗口,为保证他们是检查同一个SESSION,在地址中输入ChkSessionOut.aspx,程序运行后,发现秘密了,一分钟后,我点刷新ChkSessionOut.aspx的页面,居然输出notnull,我想到,对了,我每秒都在向这个页面发请求,所以没失效的原因,然后我将有无刷新技术的页面关闭,过一分钟后,发现输出isnull,说明Session失效了,这个发现好,我吃了一惊!想到VS.NET好好好,它就是一个好工具,哈哈!我的环境IIS5.0,Win2000,VS.Net2003然后我有设置30秒自动请求,无刷新技术的主页面不关,SESSION不失效,一关闭还是1分种后就失效,考虑到了1分钟/30秒是整数,设置成50秒,无刷新技术的主页面不关,它过1分种,失效了!哈哈,完全明白了!1分钟/50秒非整数,所以失效.

转载自:http://www.aspnetjia.com/

ASP.Net中Session失效的一种编程思路的更多相关文章

  1. ASP.NET中Session的sessionState 4种mode模式

    1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...

  2. 让Session失效的三种方法

    我们设置SESSION失效的时间,是为了确保在用户长时间不与服务器交互的情况下,可以自动退出登录.本文介绍了三种设置SESSION失效的方法,希望对你有帮助. Session对象是HttpSessio ...

  3. 第三方支付过程中session失效问题

    第三方支付过程中session失效问题 时间 2015-05-13 12:36:23  IT社区推荐资讯 原文  http://itindex.net/detail/53436-session-问题 ...

  4. 【转】介绍设置Session失效的几种方法

    转载地址:http://developer.51cto.com/art/201106/269493.htm Session对象是HttpSessionState的一个实例.该类为当前用户会话提供信息, ...

  5. 判断asp.net中session过期的方法

    判断asp.net中session过期的方法 转载自:http://www.cnblogs.com/xilipu31/archive/2013/04/12/3016830.html 方法一:最麻烦也是 ...

  6. ASP.Net中页面传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  7. asp.net中挺高性能的24种方法

    那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...

  8. 设置session失效的几种方法

    转自:http://www.cnblogs.com/linjiqin/archive/2011/06/15/2081673.html 在系统登录后,都会设置一个当前session失效的时间,以确保在用 ...

  9. asp.net中session的原理及应用

    Session简介丶特性 1.Session是一种Web会话中的常用状态之一. 2.Session提供了一种把信息保存在服务器内存中的方式.他能储存任何数据类型,包含自定义对象. 3.每个客户端的Se ...

随机推荐

  1. OsmocomBB && Motorora C118

    OsmocomBB 编译安装: http://www.cnblogs.com/hangxin1940/p/3375216.html ##准备: C118 ![C118](http://images.c ...

  2. 怎么删除github上的仓库

    1.到你的个人中心.点击你的个人账号.下图的红色部分 2.点击repositories(仓库),选择你要删除的项目 3.code这一行导航栏 最后的一个. setting 4.下拉页面到最下面 Del ...

  3. Windows调试学习笔记:(一)WinDBG中加载SOS和CLR

    最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定 ...

  4. Android学习之AsyncTask

    我们在<Android学习之Handler消息传递机制>(http://www.cnblogs.com/zhouhb/p/5812447.html)已提到过,Android只允许UI线程修 ...

  5. 解决play-1.4.0在linux或mac下提示No such file or directory的问题

    问题原因:"play"脚本中有特殊符号. 解决方案:写脚本去掉即可. 代码:fixplay.py 放在play-1.4.0目录下执行.亲测在osx与ubuntu下均可用. with ...

  6. MTNET 自用ios网络库开源

    短短两天就在https://git.oschina.net/gangwang/MTNET这里收获15个星 github 5星, 值得收藏! MTNET 自用ios网络库开源, 自用很久了,在数歀上架的 ...

  7. DotNetBar RibbonControl控件office2007风格

    在使用DotNetBar RibbonControl控件的时候如果想吧效果做成下图这种效果 把主窗体继承Office2007RibbonForm 然后要删除删除styleManager1 才会出现上图 ...

  8. 使用最新的“huihui中文语音库”实现文本转语音功能

    最近一个web项目中,需要进行语音播报,将动态的文字转换为语音(TTS)存为WAV文件后通过web播放给用户.选择了微软所提供的SAPI (The Microsoft Speech API),只需要几 ...

  9. js最新手机号码、身份证正则表达式

    身份证正则: //身份证正则表达式(15位) isIDCard1=/^[-]\d{}((\d)|([-]))(([||]\d)|[-])\d{}$/; //身份证正则表达式(18位) isIDCard ...

  10. HTTP 详解一 -- 转

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...