asp.net session

一、what

session就是服务器给客户端的编号。当浏览器首次与服务器建立连接时,服务器会给客户端随机分配一个sessionID。除了sessionID,session还存储了用户的信息,可以通过内置的session对象来访问。

当客户端发送请求时,浏览器会把sessionID附在http header中(cookieless则是附在查询字符串),供服务器端验证辨别。

asp.net session存储在服务器和客户端两边。在客户端是:cookie或url。这由web.config中的cookieless node配置。若 cookieless = true时,iis会自动给url附上sessionID。

session在服务器端通过web.config来配置,应用程序的web.config会覆盖iis的web.config。服务器端的存储有三种方式:

(1)mode = "InProc",将session信息存储在IIS进程中。这种方式iis的访问速度最快,但是session信息不稳定,当iis重启,bin下的dll更新,杀毒软件扫描web.config,web.config中的processModel node的memoryLimit属性,Global.asax或者web.config文件被更改等都会造成session信息的丢失。

(2)mode = "StateServer" stateconnectionString ="127.0.0.1:42424", 当然还需要启动asp.net state service,这个服务就是用来保存session信息的。

(3)mode = "SqlServer" sqlConnectionString = "", 当然首先需要运行一个叫做InstallSqlState的.sql的脚本,来在sql server中建立一个存储session信息的数据库,同时创建一个维护session的作业,来清除过期和结束的session。

(4)mode = "off" 表示不使用session功能。

posted @ 2012-08-31 22:55  zzq417  阅读(180)  评论(0编辑  收藏  举报