IIS6 SESSION超时时间过短的解决.doc
文本预览下载声明
IIS6 SESSION超时时间过短的解决
IIS6,SESSION超时时间过短的解决ASP(Active ServerPages)技术的Session对象用于存储用户在对话期间的私有信息。当前用户的Session对象中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,因此在用ASP开发网络应用程序时,可以利用Session对象保存和跟踪用户的状态信息。Session对象有一个十分重要的属性:Timeout,它用于设置在会话资源被释放前,会话对象所能保持非活动状态的时间(默认值为20分钟)。当Timeout属性设置的时间值耗尽后,会话资源将被释放。通过Timeout属性破坏Session对象,避免了Session对象在服务器中无限制地产生,保护了服务器资源。同理,ASP.NET中的Session继承了以上功能。那么这里简单谈谈Session的Timeout的一些设置(即Session的有效期)。最简单的设置方式延长Session有效期。1、设置网站的应用程序配置2、设置ASP.NET中的配置,修改webconfig文件。(也可以通过代码添加)3、Session储存的位置绝对不在客户端。Session储存方式有三种,可在web.config中设置。InProc模式,这种模式下Session保存在ASP.NET的进程内,是一个内部容器,在同一个应用程序目录是共享的,但是如果这个进程被Web服务器回收,则Session就会丢失,所以这种模式很不稳定。StateServer模式,这种模式下Session被保存在一个Windows Service的进程内,Windows Service的进程比ASP.NET的进程稳定得多,只要开启这个服务的电脑不当机,一般来说都是比较稳定的。SQL Server模式,这种模式就更进一步,将Session保存到了数据库中,通过牺牲效率换取稳定。也可通过ASP.NET配置设置4、存储的类型和大小?一般来说,InProc模式下,Session对储存的对象没有任何限制。而在StateServer和SQLServer模式中,由于Session需要跨进程保持,所以要求所储存对象的类型必须是可序列化的。虽然Session对所储存的数据大小没有什么限制,但不建议在Session中储存太多的东西。5、生命周期是怎么样的?正常情况下Session在新的客户端第一次访问页面时创建,在超过超时时间没有任何页面访问后销毁。6、常见的访问方法一般来说Session这种公用容器需要为期专门撰写访问类,而不应直接访问。一个简单的访问类可能看起来是这样的:public MyContext{public static MyContext Current{get{return HttpContext.Current.Session[hnop]as MyContext;}set{HttpContext.Current.Session[hnop]=value;}}}7、比较Session的特点很突出,就是他与客户端有关,一般来说只要客户端不关闭浏览器,那么他访问的所有的页面所获得的都是同一个Session容器。我们可以往Session中放入用户相关的信息,如登陆信息。但要注意的是,Session是一个公共容器,所以他里面的信息可以被任何运行在服务器上的代码所修改。===ASP.Net中的Session如果用户关闭了Cookie,Session的值一样也可以被保存。config.web文件进行一些配制,因为在其中找到关于Session的设置文本,如:sessionstate cookieless=false/把cookieless=false改成cookieless=true,那么以后Session就不储存在cookies中了,而在储存在URL中。Session还能在另外一台主机上保持:把localhost改成您要的主机sessionstate inproc=falseserver=localhostport=42424/===摘录自:Application状态为应用程序提供了一个全局的状态。所有客户都可以使用该状态。从设计的角度来说,我们通常用Application来存储一些标准的数据。同时,我们在使用它时要注意避免性能的降低,存储的数据尽可能提供给客户只读的功能。我们可以使用HttpApplication类的Application属性来访问Application状态,它返回一个HttpApplicationState类的实例。这个类是一个对象集合,可以存储任何类型的数据,并以键/值对的形式存储。一旦数据被存储到状态后,就不会删除,除非应用程序重新启动或者被终止或回收。我们可以在Global.asax的Application_
显示全部