【www.gdgbn.com--php应用】

asp教程.net session 简单测试应用程序

<%@ page language="c#" autoeventwireup="true"  codefile="default.aspx.cs" inherits="_default" %>



    session测试
    <script type="text/网页特效">
    function ajaxget()
 {
   var ajaxobject = window.activexobject?new activexobject("microsoft.xmlhttp"):new xmlhttprequest();
   ajaxobject.onreadystatechange = function ajaxstatechange() {
       if(ajaxobject.readystate==4)
     {
       if(ajaxobject.status==200)
       {
         var strdata = ajaxobject.responsetext;
         if(strdata == 1)
         {
          window.cleartimeout(auto);
          alert(ajaxcount);
         }
         return;
       }
       else
       {
         alert("网络繁忙,请刷新后重试!");
       }
     }
    };
   ajaxobject.open("get", "default.aspx?ajax=1", true);
   ajaxobject.setrequestheader("content-type","application/x-www-form-urlencoded;charset=utf-8");
   ajaxobject.send();
 }
 
 var ajaxcount = 0;
 var auto = null;
 function startajax()
 {
  //当通过ajax定时请求aspx页面时,可防止当前页面session丢失!
  var btnajax = document.getelementbyid("btnajax");
  btnajax.disabled = true;
  ajaxcount++;
  btnajax.value = ajaxcount;
  ajaxget();
  auto = window.settimeout(startajax, 1000);
 }
    </script>


   


   
   
 
 
 session包含的值数量:[<%= session.count %>]
 <%= session["test"] %>
   
    当前session数:<%= constants.sessioncount %>

    累计session数:<%= constants.sessionallcount%>
   
   
   
    sessionid
    启动时间
   
    <% foreach (dictionaryentry r in constants.sessionlist) {
     bool iscur = r.key.tostring() == session.sessionid;  %>
    ;">
    <%= r.key %>
    <%= r.value %>
   
 <% } %>
   
   


cs文件

using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.collections;

public partial class _default : system.web.ui.page
{
    protected void page_load(object sender, eventargs e)
 {
  //注意当ajax请求aspx页面时,aspx页面应设置为不允许缓存!
  response.appendheader("pragma", "no-cache");
  response.appendheader("cache-control", "no-cache, must-revalidate");
  response.appendheader("expires", "0");
  if (request.querystring["ajax"] != null)
  {
   //ajax返回当前网站session数量
   response.write(constants.sessionlist.count.tostring());
   response.end();
  }
    }

 protected void button1_click(object sender, eventargs e)
 {
  //添加session
  //session["test"] = datetime.now;
  session.add("test", datetime.now);
  response.redirect(request.url.tostring());
 }

 protected void button2_click(object sender, eventargs e)
 {
  //移除指定session
  //session["test"] = null;
  //session.remove("test");

  //移除所有session 与 session.removeall();功能相同
  //session.clear();

  //终止当前回话状态 注意会触发session_end 与session超时效果相同
  //调用此句后,sessionid并没有被重置。
  //当仅仅调用此句时(当session超时过期时),如果再刷新当前页面则会一直调用session_start 和 session_end
  //除非给session添加值或重置sessionid后,才会退出此状态。
  session.abandon();

  //重置当前sessionid
  //如果设置的sessionid与已存在的sessionid重复,则将发生session劫持。
  //如不存在则会系统会自动创建新session
  //response.cookies.add(new httpcookie("asp.net教程_sessionid", this.textbox1.text));
  response.redirect(request.url.tostring());
 }
}

constanst.cs

using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.collections;

///


/// constants 的摘要说明
///

public class constants
{
 public constants()
 {
  //
  // todo: 在此处添加构造函数逻辑
  //
 }

 ///


 /// 当前所有session列表
 ///

 public static hashtable sessionlist = new hashtable();

 ///


 /// 当前session个数
 ///

 public static int sessioncount = 0;

 ///


 /// 累计session个数
 ///

 public static int sessionallcount = 0;
}

global.asax

<%@ application language="c#" %>

<script runat="server">

    void application_start(object sender, eventargs e)
    {
        // 在应用程序启动时运行的代码
    }
   
    void application_end(object sender, eventargs e)
    {
        //  在应用程序关闭时运行的代码

    }
       
    void application_error(object sender, eventargs e)
    {
        // 在出现未处理的错误时运行的代码

    }

    void session_start(object sender, eventargs e)
 {
  constants.sessionallcount++;
  constants.sessioncount++;
  constants.sessionlist.add(session.sessionid, datetime.now);
  //session["sessionstartdatetime"] = datetime.now;
    }

    void session_end(object sender, eventargs e)
 {
  constants.sessioncount--;
  constants.sessionlist.remove(session.sessionid);
    }
      
</script>

本文来源:http://www.gdgbn.com/jiaocheng/29443/