linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > asp.net >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·NetBPM工作流的一个示例:请假
·Office Web Components(OWC)绘
·asp.net正则表达式语法
·asp.net 2.0 ajax中使用PopupC
·Ado.Net读取Excel常见问题总结
·数据源为空时如何让GridView显
·如何让UpdatePanel支持文件上传
·C#.Net的常见面试试题和参考答
·asp.net ajax客户端编程+jquer
·Brettle.Web.NeatUpload.dll支
·ASP.NET使用Cookie
·ASP.NET DEMO 15: 同时支持行单
·如何使IE的后退按钮无效
·如何在ASP.NET中用OWC绘制图表
·asp.net:正确判断当前用户角色
最新文章
·Ajax Control Toolkit Animati
·讨论一下类似BlogEngine内一次
·使用CSS+SiteMap+UserControl+
·Asp.net中多彩下拉框的实现
·浅谈ASP.NET的Postback
·分清ASP.NET AJAX中的Extender
·Tip:在使用AjaxControlTookit
·有关注册DataItem的一些可能被
·IIRF(Ionic's Isapi Rewrite
·asp.net 客户端回调功能的实现
·关于控件部分的看法--读Progra
·为什么在vista上做开发
·如何封装JS和CSS文件为服务器端
·岂今我看过的最强的排序算法
·设计模式学习笔记之单件模式
Google
 
ASP.NET中Session丢失原因与解决方案小结
[ 作者:  加入时间:2007-10-09 11:37:05  来自:Linux联盟收集整理 ]
win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的session丢失。 7HrLinux联盟
7HrLinux联盟
因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失。 7HrLinux联盟
7HrLinux联盟
解决办法: 7HrLinux联盟
7HrLinux联盟
修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收该进程。通过使用默认应用程序池,可以确保多个应用程序间互相隔离,保证由于一个应用程序的崩溃不会影响另外的Web应用程序。还可以使一个独立的应用程序运行在一个指定的用户帐号特权之下。 7HrLinux联盟
7HrLinux联盟
如果使用StateServer方式或者Sql Server数据库方式来保存Session,则不受该设置的影响。 7HrLinux联盟
7HrLinux联盟
可能的原因2: 7HrLinux联盟
7HrLinux联盟
系统要运行在负载平衡的 Web 场环境中,而系统配置文件web.config中的Session状态却设置为InProc(即在本地存储会话状态),导至在用户访问量大时,Session常经超时的情况。引起这个现象的原因主要是因为用户通过负载平衡IP来访问WEB应用系统,某段时候在某台服务器保存了Session的会话状态,但在其它的WEB前端服务器中却没有保存Session的会话状态,而随着并发量的增大,负载平衡会当作路由随时访问空闲的服务器,结果空闲的服务器并没有之前保存的Session会话状态。 7HrLinux联盟
7HrLinux联盟
解决办法: 7HrLinux联盟
7HrLinux联盟
1.当您在负载平衡的 Web 场环境中运行 ASP.NET Web 应用程序时,一定要使用 SqlServer 或 StateServer 会话状态模式,在项目中我们基于性能考虑并没有选择SqlServer模式来存储Session状态,而是选择一台SessionStateServer 服务器来用户的Session会话状态。我们要在系统配置文件web.config中设置如下: 7HrLinux联盟
7HrLinux联盟
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=192.168.0.1:42424" stateNetworkTimeout="14400" /> 7HrLinux联盟
7HrLinux联盟
还要添加一项 7HrLinux联盟
7HrLinux联盟
<machineKey validationKey=7HrLinux联盟
"78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/> 7HrLinux联盟
7HrLinux联盟
2. 我们同时还要在SessionStateServer 服务器中启动ASP.NET State Service服务,具体设置:控制面板>>管理工具>>服务>>ASP.NET State Service,把它设为自动启动即可。 7HrLinux联盟
7HrLinux联盟
3. 每台前端WEB服务的Microsoft“Internet 信息服务”(IIS)设置 7HrLinux联盟
7HrLinux联盟
要在 Web 场中的不同 Web 服务器间维护会话状态,Microsoft“Internet 信息服务”(IIS) 配置数据库中 Web 站点的应用程序路径(例如,\LM\W3SVC\2)与 Web 场中所有 Web 服务器必须相同。大小写也必须相同,因为应用程序路径是区分大小写的。在一台 Web 服务器上,承载 ASP.NET 应用程序的 Web 站点的实例 ID 可能是 2(其中应用程序路径是 \LM\W3SVC\2)。在另一台 Web 服务器上,Web 站点的实例 ID 可能是 3(其中应用程序路径是 \LM\W3SVC\3)。因此,Web 场中的 Web 服务器之间的应用程序路径是不同的。我们必须使Web 场Web 站点的实例 ID 相同即可。你可以在IIS中把某一个WEB配置信息保存为一个文件,其他Web 服务器的IIS配置可以来自这一个文件。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·如何将asp.net的后台cs代码移动到页面上  (2007-10-29 14:25:45)
 ·读Programming ASP.NET中文版控件  (2007-10-29 14:15:23)
 ·ASP.NET 2.0如何封装JS和CSS文件为服务器端控件  (2007-10-29 14:13:11)
 ·asp.net中用VML动态的画出数据分析图表详解  (2007-10-29 14:07:23)
 ·asp.net性能的技巧  (2007-10-26 13:23:05)
 ·asp.net多频道网站开发架构浅析  (2007-10-26 13:22:34)
 ·让 SortTable 和 Asp.net Ajax 和睦相处  (2007-10-26 13:21:44)
 ·Jimmy’s 使用Asp.Net Ajax 构建三层式Web 应用程序  (2007-10-26 13:14:20)
 ·asp.net 2.0 ajax中使用PopupControlExtender  (2007-10-26 13:13:35)
 ·asp.net 2.0 ajax中实现弹出窗口报警提示  (2007-10-26 13:12:27)