千家信息网

如何运用ASP.NET中的session存储模式

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家介绍如何运用ASP.NET中的session存储模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在asp.net中的Session存储方式不象asp那样单一,一共
千家信息网最后更新 2026年11月03日如何运用ASP.NET中的session存储模式

这篇文章给大家介绍如何运用ASP.NET中的session存储模式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

在asp.net中的Session存储方式不象asp那样单一,一共提供了三种存储方式,由于最近一个2000多人使用的web软件出现了故障,用户每天早上在某一时刻出现难以登陆现象,接着Session丢值出现,只有重启IIS,或机器.这时程序恢复正常了.整天都不会出现同样的问题 ,但是第二天依旧!这种现象持续了好几天,我检查了一下日志文件,高峰每秒访问人数大概20人左右,同时大概100多人在线,以后访问人数还会增加,为了解决这个怪问题,先从软件着手,故而三种方式都应用了一番。

打开web.config文件

< sessionState           mode="InProc"         stateConnectionString="tcpip=127.0.0.1:42424"         sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"         cookieless="false"           timeout="20"   />

其中默认的mode是InProc类型,这种模式和以前ASP模式一样,就是服务器将Session信息存储在IIS进程当中,当IIS关闭、重起后这些进程信息都会丢失,但这种模式的性能***(具体没测,看书上说),这种模式是asp.net的默认方式。

由于这种模式出现了故障,当时我的考虑就是由于访问量过大的原因,导致Inetinfo.exe进程崩溃。用户难以登陆以致Session丢值出现故障,我采用了另外一种Session的存储方式把Session信息存储在进程外。

首先,打开管理工具找到服务,找到名为:asp.net State Service的服务,启动它.并且改成自动启动。这时你可以在任务管理器中看到一个名为aspnet_state.exe的进程。这就是我们保存session信息的进程。

然后,回到web.config文件中把Mode的值改为StateServer,保存文件。OK.

< sessionState           mode="StateServer"         stateConnectionString="tcpip=127.0.0.1:42424"         sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa"         cookieless="false"           timeout="20"   />

这种模式当我们重起IIS,保存的session值不会丢失。另外这种方式还可以把信息保存在其他机器的进程中,不过还要更改 stateConnectionString="tcpip=127.0.0.1:42424",IP地址改为其他机器即可。

另外还采取了其他的措施.比如把数据库和Web服务器分开,数据库服务器不提供WEB服务,Web服务器不提供数据库服务,

然后把连接池扩大,由于asp.net中ADO.NET数据访问默认连接池数量为100, 后来我扩大到6000顺便把写法加上来

"Server=(local);Database=rgs;password=sa;user ID=sa;Max Pool Size =6000; Min Pool Size =5;Pooling=True"

***把Machine.config中的ProcessModel中的memoryLimit改为95,默认为60,表示内存占用超过60%后iis进程会自动重起。接着还做写其它一些优化IIS的方法,把注册表的IIS缓存加大等等 。

当我做完这些优化步骤后,整个软件运行比较良好,第二天没有发现堵塞的现象,但是第三天情况又出现了,实在没办法,我采取了***一种ASP.NET中的session存储方法就是将Session存储在SQLServer中,我想这样稳定性应该强些。

要使用SQLServer中,首先在会话状态的SQLServer的计算机上,运行InstallSqlState.sql或InstallPersistSqlState.sql(默认位置:systemroot\Microsoft.NET\Framework\versionNumber下面)两个脚本都创建一个名为ASPState的数据库,两个脚本的差别在于放置ASPStateTempApplication和ASPStageTempSessions表的位置。InstallSqlState.sql脚本将这些表添加到TempDB数据库,该数据库在计算机重起时将丢失数据,而InstallPersistSqlState.sql脚本将这些表添加到ASPState数据库,该数据库重启时保留会话数据。

然后在应用程序的web.config文件中,把< sessionState>元素的mode属性设置为SQLServer,***将sqlConnectionString属性设置为Integrated Security=SSPI;data source=serverName;

< sessionState mode="SQLServer" sqlConnectionString=" Integrated Security=SSPI;data source=dataserver;" cookieless="false" timeout="20"/>  < /sessionState>

如果部署在其他机器上可以更改为,加上用户名和密码

< sessionState           mode="SQLServer"         stateConnectionString="tcpip=127.0.0.1:42424"         sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa"         cookieless="false"           timeout="20"   />

这样部署完成了,如果不想使用这种可以删除掉,只要在相应的目录(systemroot\Microsoft.NET\Framework\versionNumber)找到UninstallPersistSqlState.sql或者UninstallSqlState.sql文件运行即可。这样就介绍了ASP.NET中的session存储模式。

要注意的是,无论使用StateServer或者SQLServer模式时,当使用session转换对象时,注意对象要先序列化,就是在类前加上Serializable,否则会出现错误!

关于如何运用ASP.NET中的session存储模式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 模式 存储 数据库 进程 服务 文件 方式 信息 就是 服务器 机器 脚本 故障 现象 用户 软件 运行 两个 人数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 保险科技 互联网保险 中国互联网科技工作委员会毛军 河南真二互联网科技有限公司 金诺互联网科技 深圳天众互联网科技公司 润盈互联网科技 富国互联网科技创新基金 卫星互联网科技股票 广州慧亚互联网科技怎么样 重庆互联网医院沙龙医盟信息科技 崇明区互联网教育科技诚信经营 苏州五指互联网络科技有限 玉溪新华互联网科技好不好 美国互联网科技实力 怎样加入科技互联网 本届互联网大会上的黑科技 西安有哪些互联网高科技企业 容联科技互联网电商 科技互联网专业工作会议发言稿 伟宏互联网科技 科技互联网项目 火传媒上海互联网科技 上海亿帐通互联网科技 互联网科技有限公司 翻译 中正互联网科技招聘 杭州壁岐互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 黑龙江互联网科技公司 中国主要互联网科技公司
0