创建一个项目Session,在项目下面添加一个类 SessionMgr 添加一个WebForm1.aspx
SessionMgr 类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Sesson
{
public class SessonMgr
{
//其实 Session就是内存中的Dictionary,只不过它是一个特殊的Dictionary,它的value值也是一个Dictionary ,它是用来存session数据的:
private static Dictionary<string, Dictionary<string, object>> data = new Dictionary<string, Dictionary<string, object>>();
//这个sesseionID就是用来做session的key的,方法的放回值就是session的value,这个value是一个dictionary<string,object>
public static Dictionary<string, object> GetSession(string sesseionID)
{
if (data.ContainsKey(sesseionID)) //查询data中是否包含用户传递过来key为sessionID的session
{
return data[sesseionID]; //如果包含在data里面,那么就将它的值返回回去,它的值(data[sesseionID])其实就是一个Dictionary<string, object>; 【这个data[sessionID]就是Dictionary<string, Dictionary<string, object>>中的Dictionary<string, object>】
}
else
{
Dictionary<string, object> session = new Dictionary<string, object>();
//data[sesseionID] = session; 另外一种写法
data.Add(sesseionID, session);//将用户传过来的sessionID作为key,将自己创建的一个Dictionary<string,object>对象session作为值 添加到data中。
return session;
}
}
}
}
WebForm1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Sesson.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
<%-- 设置session--%>
<asp:Button ID="Button1" runat="server" Text="设置session" OnClick="Button1_Click" />
<%--获取session--%>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="获取session" OnClick="Button2_Click" />
<%-- 这个button用来弹出目目前浏览器里有哪些Cookie,他们的值是什么。--%>
<input type="button" value="Test" onclick="alert(document.cookie);" />
</p>
</div>
</form>
</body>
</html>
WebForm1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Sesson
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//首先检查一下我的Cookies里面有没有一条叫做MySession的Cookie,如果没有,就将设置一个
if (Request.Cookies["MySession"] == null)
{
string sessionID = Guid.NewGuid().ToString();
//设置Cookie
Response.SetCookie(new HttpCookie("MySession", sessionID));//设置一个名字为:MySession的Cookie,它的值设定为sessionID
/*
HttpCookie mycookie = new HttpCookie("abc"); //设置一个名字叫"abc"的cookie ,它的值是下面三个dictionary<string,string>
mycookie.Values.Add("a", "111");
mycookie.Values.Add("b", "222");
Response.SetCookie(mycookie);
*/
}
}
//设置Session
protected void Button1_Click(object sender, EventArgs e)
{
//首先,我先在Cookies里取一下名字为MySession的Cookie。这个Cookie其实就是Sesson的一个key。取得这个Sesson的key之后,我就调用SessonMgr.GetSession(sessionID)这个方法。
string sessionID = Request.Cookies["MySession"].Value;
//SessonMgr.GetSession(sessionID);这个方法就是创建一个key为MySession,值为Dictionary<string,object>的 Dictionary;然后给它的值返回回来。
Dictionary<string,object> session= SessonMgr.GetSession(sessionID);
session["Name"] = "张三"; //或者这样写: session.Add("Name", "张三");
session["Age"] = "26"; //或者这样写: session.Add("Age", "26");
session["Gender"] = "男"; //或者这样写: session.Add("Gender", "男");
}
//获取Session
protected void Button2_Click(object sender, EventArgs e)
{
string sessionID = Request.Cookies["MySession"].Value;
Dictionary<string,object> session= SessonMgr.GetSession(sessionID);
TextBox2.Text = session["Name"].ToString() + session["Age"].ToString() + session["Gender"].ToString();
}
}
}
原文:http://blog.csdn.net/fanbin168/article/details/38385139