三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> .NET新手区 -> 简单的自定义Session -> 正文阅读
 

[.NET新手区]简单的自定义Session

简单的自定义Session 有关Session、Cookie机制建议参考文章:CookieSession机制详解,写的很详细,不再赘述
本篇文章通过一个简单的案例揭秘Session机制以及和Cookie的区别和联系:
服务器端代码:

 1  /*自定义Session*/
 2     public class MySession
 3     {
 4         private const string MSession = "MySessionId";
 5         private HttpContext context;
 6         private string sessionId;   //唯一标识这个session,最终将SessionId放到客户端Cookie中
 7 
 8         //提供构造函数
 9         public MySession(HttpContext context)
10         {
11             this.context = context;
12             HttpCookie cookie = context.Request.Cookies[MSession];
13             if (cookie == null)
14             {
15                 CreateSession();
16             }
17             else
18             {
19                 this.sessionId = cookie.Value;
20             }
21            
22         }
23         //创建Session 使用Cookie来保存SessionId
24         public void CreateSession()
25         {
26             Guid guid = new Guid();
27             sessionId = guid.ToString();
28             HttpCookie cookie = new HttpCookie(MSession);
29             cookie.Value = sessionId;
30             context.Response.SetCookie(cookie); 
31         }
32 
33 
34         public void SetValue(string value)
35         {
36             //Session的值是保存在服务器上的
37             string path = context.Server.MapPath("~/MySession"+sessionId);
38             File.WriteAllText(path,value);
39         }
40 
41         public string GetValue()
42         {
43             string path = context.Server.MapPath("~/MySession"+sessionId);
44             if(!File.Exists(path))
45             {
46                 return null;
47             }
48             return File.ReadAllText(path);
49         }
50     }

分析:
1)每一个Session实例都用sessionid来唯一标记,为保证这个sessionid唯一性,以上例子中使用了GUID算法来生成
2)当客户端首次访问的时候,服务器端调用CreateSession()方法,返回给这个HttpContext对象一个Cookie,Cookie的值是使用GUID生成的sessionid,这个Cookie的value即是我们自定义的Session的Id了!根据需要,使用SetValue()方法,为自定义Session赋值(Session的value保存在服务器上)。
3)客户端再次访问的时候,服务器端根据HttpContext“携带”过来的Cookie信息(即sessionid),进行匹配,调用GetValue()方法,得到Session的Value,即得到了客户端的状态信息
4)用一个通俗的案例来解释------以前病人看病的时候,都会使用“病例本” ,病例本封面写上病人的姓名性别等信息,病例里边写每次诊断的信息(用了什么药,病人状况怎么样等),每次病人看病的时候,携带病例本找自己的主治医生。这个“病例本”就相当于Cookie。而现在很多医院引进了自己的HIS系统,病人看病的时候,只用携带自己的身份证号,挂号是说出自己的身份证号码,就能在HIS系统中查到自己以前的就诊情况,也就是说,就诊信息不再记录到病历本中由病人携带,而是记录到医院的HIS系统中,这个HIS系统就相当于Session
  .NET新手区 最新文章
2017年10月21日 CSS常用样式&鼠标样式
EventLog组件读写事件日志
Visual Studio 2017 系统发布部署服务器教程
多线程编程学习笔记
如何在已有项目中引入FineUIMvc
多线程编程学习笔记
WebAPI搭建(二) 让WebAPI 返回JSON格式的
Linq中Take、TakeWhile、Skip、SkipWhile的
[C#] C# 基础回顾
page.ClientScript.RegisterStartupScript
上一篇文章           查看所有文章
加:2017-10-12 23:21:28  更:2017-10-12 23:21:31 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年10日历
2017-10-22 7:09:11
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库