浅谈.Net下的Session用法

转载 2006年06月02日 10:29:00

原文地址:http://hanks.cnblogs.com/archive/2004/12/18/78815.aspx

背景

        在我参与的一个项目中,这个项目是基本BS结构的WEB应用系统,经常会出现在Session丢失的情况,即使用户在操作的过程中也会出现超时现象。
原因
        我们的系统要运行在负载平衡的 Web 场环境中,而系统配置文件web.config中的Session状态却设置为InProc(即在本地存储会话状态),导至在用户访问量大时,Session常经超时的情况。引起这个现象的原因主要是因为用户通过负载平衡IP来访问WEB应用系统,他在某段时候在某台服务器保存了Session的会话状态,但在其它的WEB前端服务器中却没有保存Session的会话状态,而随着并发量的增大,负载平衡会当作路由随时访问空闲的服务器,结果空闲的服务器并没有之前保存的Session会话状态。
解决方案
       1.当您在负载平衡的 Web 场环境中运行 ASP.NET Web 应用程序时,一定要使用 SqlServer 或 StateServer 会话状态模式,在项目中我们基于性能考虑并没有选择SqlServer模式来存储Session状态,而是选择一台SessionStateServer 服务器来用户的Session会话状态。我们要在系统配置文件web.config中设置如下:
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=192.168.0.1:42424" stateNetworkTimeout="14400" />

还要添加一项
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>

       2. 我们同时还要在SessionStateServer 服务器中启动ASP.NET State Service服务,具体设置:控制面板>>管理工具>>服务>>ASP.NET State Service,把它设为自动启动即可。
       3. 每台前端WEB服务的Microsoft“Internet 信息服务”(IIS)设置
             要在 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配置可以来自这一个文件。您如果想知道具体的设置请访问Microsoft Support网站:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;325056

浅谈.Net下的Session用法

背景        在我参与的一个项目中,这个项目是基本BS结构的WEB应用系统,经常会出现在Session丢失的情况,即使用户在操作的过程中也会出现超时现象。 原因         我们的系统要运行...
  • lifuyun
  • lifuyun
  • 2007年07月30日 09:54
  • 519

浅谈.Net下的Session用法-

背景   在我参与的一个项目中,这个项目是基本BS结构的WEB应用系统,经常会出现在Session丢失的情况,即使用户在操作的过程中也会出现超时现象。 原因   我们的系统要运行在负载平衡的 Web ...
  • bnb2626
  • bnb2626
  • 2007年11月19日 10:06
  • 547

asp.net中Session小例子

登录界面aspx代码如下: function isempty() { var txt_id = document.g...
  • yayun0516
  • yayun0516
  • 2014年12月04日 10:40
  • 1951

ASP.NET中如何正确使用Session

Asp.Net中的Session要比Asp中的Session灵活和强大很多,同时也复杂很多;看到有一些Asp.Net开发人员报怨说Session不稳定,莫名其妙的丢失,其实这正是Asp.Net改进的地...
  • Bens2014
  • Bens2014
  • 2014年06月01日 21:06
  • 872

ASP.NET中Session的用法

我们可以使用 Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求...
  • wangjingjing1014
  • wangjingjing1014
  • 2013年04月15日 19:03
  • 10177

asp.net 正确的使用session

asp.net 正确的使用session
  • paolei
  • paolei
  • 2016年04月11日 20:12
  • 1262

ASP.NET中Session的用法之二:进行页面传值

 在页面之间传递信息有许多方式:第一:可以使用QueryString第二:可以使用Session第三:Server.Transfer这三种传值方式都有利有弊,下面我以我的经验给大家讲解一下首先:Que...
  • wangjun_pfc
  • wangjun_pfc
  • 2007年12月13日 17:00
  • 9541

net core中Session的使用

1.在项目中通过管理NuGet程序包下载session              2.在Startup.cs文件的ConfigureServices方法中添加session服务 ...
  • zcwforali
  • zcwforali
  • 2017年03月01日 23:22
  • 1184

.NET Core 中 Session的使用

原文链接:http://beidouxun.com/Articles/Details/50bd1241-bc05-43df-9cbb-d5c00ced33ac .NET Core中使用Sess...
  • u013096666
  • u013096666
  • 2017年09月01日 11:01
  • 295

ASP.NET之Application、Session和Cookie的区别

在Asp.net中Application、Session和Cookie都可以保存信息,那么它们有什么不同呢?    一、首先Application是在服务器端建立一个状态变量,存储于服务器的全局变量来...
  • u010858791
  • u010858791
  • 2014年10月23日 17:16
  • 2275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈.Net下的Session用法
举报原因:
原因补充:

(最多只允许输入30个字)