session 原理机制

首先在WebApplication1项目下添加一个SessionMgr类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

namespace WebApplication1

{

 

    public static class SessionMgr

    {

        privatestatic IDictionary<string, IDictionary<string, object>>data = new Dictionary<string, IDictionary<string, object>>();

        //

        public static IDictionary<string, object>GetSession(string ID)

        {

            if(data.ContainsKey(ID)) //如果data中存在你要找的这个ID

            {

                returndata[ID];

            }

            else

            {

                IDictionary<string, object>session = new Dictionary<string, object>();//如果data中不存在你要找的这个sessionID,那我就帮你建一个。

                data.Add(ID, session);

                returnsession;

            }

        }

        //

        public static voidSetSession(string key, IDictionary<string, object>value)

        {

            if(!data.ContainsKey(key)) //如果data中不存在key

                data.Add(key, value);  //将你经过SetSession方法传过来的参数以键值对的形式写入到data中。

            else

                data[key] = value;

 

        }

    }

 

}

 

 **********************************************************************************************************************************************************************



在WebApplication1项目下的添加web窗体。默认名为WebForm1.aspx  打开WebForm1.aspx.cs文件 WebForm1.aspx.cs代码内容

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace WebApplication1

{

    public partial class WebForm1 : System.Web.UI.Page

    {

        protectedvoid Page_Load(objectsender, EventArgs e)

        {

            //首先去Cookie里面去取一下它的sessionId

            if(Request.Cookies["MysessionId"] ==null) //如果Cookie里面没有MysessionId,就给它分配一个。

            {

                stringsessionId = Guid.NewGuid().ToString();

                Response.SetCookie(new HttpCookie("MysessionId",sessionId)); //这样就把我给它分配的sessionId给他写到Cookie里面去了

            }

        }

        //设置Session

        protectedvoid Button1_Click(objectsender, EventArgs e)

        {

            stringsessionId = Request.Cookies["MysessionId"].Value;//Cookie中取到了这个MysessionId的值.比给他赋给sessionId;

            IDictionary<string, object>session = SessionMgr.GetSession(sessionId);//从服务器端 SessionMgr类中取出和客户端相关联的sessionId

           

            //session["服务器端的数据"] = 33333; //向和这个客户端关联的服务器端内存中添加键值对数据

            //session["我想怎么设就怎么设"] = "88888";

 

            Dictionary<string, object>val = new Dictionary<string, object>();

            val.Add("test","123");

           

 

            SessionMgr.SetSession("test", val);

            Response.Write("设置成功");

 

           

           

        }

        //读取Session

        protectedvoid Button2_Click(objectsender, EventArgs e)

        {

            //stringsessionId = Request.Cookies["MysessionId"].Value; //Cookie中取到了这个MysessionId的值.比给他赋给sessionId;

            //IDictionary<string,object> session = SessionMgr.GetSession(sessionId);//从服务器端 SessionMgr类中取出和客户端相关联的sessionId

            //Button2.Text=Convert.ToString(session["服务器端的数据"]) + session["我想怎么设就怎么设"];

 

            IDictionary<string,object> A= SessionMgr.GetSession("abc");

 

            Button1.Text = A["abc"].ToString();

           

        }

    }

}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值