Dzwebs.Net

撰写电脑技术杂文十余年

asp.net sessionState如何添加

Admin | 2013-2-15 10:33:46 | 被阅次数 | 5850

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在网站中,经常使用到配置文件,一般有全局配置文件和局部配置文件,全局文件一般在Web.Config文件中配置,当然,也有在Global.asax中配置的。

  下面给大家讲述的是,会话状态中的SESSION的保存时间的问题,这得使用到sessionState节点。

  本例子使用到的配置方式,选择的是Web.Config文件。请注意,sessionState节点添加在</system.web>和</configuration>两个节点内部的任何一个位置都可以,简单的配置代码如下:

  <sessionState mode="InProc" cookieless="false" timeout="10"/>

  代码解释:

  mode="InProc" 使用内存的方式来保存会话状态。

  cookieless="false" 不启用cookieless

  timeout="10" session会话状态保存的时间为10分钟,这里可以自行修改而用之。

  当然,关于会话状态的保存方式及各种参数,详情请看下文:

  ASP.NET 2.0提供了哪些存储SessionID的模式呢?

  Cookie(默认)。如果客户端禁止了Cookie的使用,Session也将失效。

  URL。Cookie是否开启不影响Session使用,缺点是不能再使用绝对链接了。

  前面说了SessionID可以存储在客户端的Cookie或者URL中,那么Session真正的内容存储在哪里呢?ASP.NET 2.0对于Session内容的存储也提供了多种模式。

  mode属性设为Off

  和从前的ASP一样,ASP.NET的会话状态管理是要产生开销的。所以,假如某个网页不需要访问
Session对象,开发者应将那个页的Page预编译指令的EnableSessionState属性设为False。
要为整个网站禁用会话状态,可在Web.config文件中将sessionState元素的mode属性设为Off。

  为了克服inproc 模式的缺点, ASP.NET 提供了两种进程外保存会话状态的方法。

  mode属性设为InProc(默认)

  Session存储在IIS进程中(Web服务器内存)。

  mode属性设为StateServer

  Session存储在独立的Windows服务进程中(可以不是Web服务器)。

  mode属性设为SqlServer

  Session存储在SqlServer数据库的表中(SqlServer服务器)。

  虽然InProc模式的Session直接存储在Web服务器IIS进程中,速度比较快,但是每次重新启动IIS都会导致Session丢失。利用后两种模式,我们就完全可以把Session从Web服务器中独立出来,从而减轻Web服务器的压力,同时减少Session丢失的概率。

  因此,SessionID存储在客户端(可以是Cookie或者URL),其他都存储在服务端(可以是IIS进程、独立的Windows服务进程或者SQL Server数据库中)。

  如上的四种模式性能的比价,存在如下优点及缺点:

  InProc:最快,但是session数据越多,web服务器上消耗的内存也越多,它可能影响性能。

  StateServer:当存储基本类型(如string,integer等)数据时,在同一个测试环境中它比InProc慢15%。如果你存储大量对象,序列化和反序列化可能影响到性能。

  SQLServer:当存储基本类型(如string,integer等)数据时,在同一个测试环境中它比InProc慢25%。它也有与StateServer一样的序列化性能问题。


该杂文来自: 网站开发杂文

上一篇:修改IIS的虚拟内存

下一篇:C#代码直接生成质量更佳的JPG图片

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计