您现在的位置: 网页吧 > 技术文档 > 网络编程 > NET专区 > 正文
  • 站内搜索:

asp.net避免Sessiont丢失无效的方法

[作者:佚名 | 点击数: | 时间:2008-5-17]【

最简单的办法就是不要使用默认的方式也即?
InProc(默认,进程内的会话状态):Session存储在IIS进程中(Web服务器内存)。如果使用的是Windows   2000   Server或Windows   XP,IIS使用aspnet_wp.exe进程,如果使用的是Windows   2003   Server,IIS使用w3wp.exe。

InProc拥有最好的性能。但进程内Session很容易丢失Session信息。如果重启了应用程序,所有的Session信息就会丢失。而很多原因都会导致ASP.NET应用程序的重启。
? 修改了Web.Config或Global.asax文件,或改变了文件的修改日期。
? 修改了\bin或\App_Code目录里的文件。
? 防病毒软件修改了上述文件等等

你可以考虑以下两种方式
StateServer(进程外的会话状态):Session存储在独立的Windows服务进程aspnet_state.exe中

如果要启用StateServer中的Session状态,首先要在”控制面板”--“管理工具”--“服务”中,启用ASP.NET   State   Services(ASP.NET   状态服务),并将此服务设置为Automatic(自动启动)

启动ASP.NET状态服务后,需要配置ASP.NET应用程序来使用它。
我们需要在Web.Config文件中system.web节点中添加如下代码
<sessionState   mode="StateServer"   stateNetworkTimeout="20"
stateConnectionString="tcpip=127.0.0.1:42424"   />
首先,mode属性被设为StateServer。接着,stateConnectionString属性用来指定ASP.NET状态服务器端的位置。连 接位置被创建为在127.0.0.1,端口42424。最后,stateNetworkTimeout属性用来指定连接超时的秒数。
需要注意的是,此时必须把对象标注为可序列化后(使用Serializable特性标记需要序列化的类)才能在服务中进行存储。Microsoft建议所 有的开发人员在开发过程中都使用进程外的会话状态,以避免项目如果切换到其他进程外的提供程序或SqlServer而导致站点的错误。

或者使用
SqlServer:Session存储在SqlServer数据库的表中,可以用aspnet_regsql.exe配置它(SqlServer服务器)

asp.net避免Sessiont丢失无效的方法网友评论
发表评论
  • 姓 名 :* (必填项)
  • E-mail: QQ:
  • 评 分 : 1分 2分 3分 4分 5分
  • 评论内容:
·请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任。
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据。
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为。
网页吧·中国站长第一门户