专业虚拟主机提供商! 正规合法诚信公司、拥有ICP/ISP双经营许可证
域名空间实时开通立即使用,几分钟即可完成
安全方便的网上支付,超强的域名空间管理程序
我要购买空间,请点这里
我要注册域名,请点这里
我要建设网站,请点这里
我要续费域名,请点这里
我要续费空间,请点这里
我要在线支付,请点这里
首 页 特惠套餐 域名注册 虚拟主机 托管租用 FTP空间 数据库 企业邮局 网站建设 联系我们 付款方式
 | 网站首页 | 虚拟主机资讯 | 域名注册资讯 | 托管租用资讯 | 网络编程 | 网站备案 | 系统安全 | 源码下载 | SEO优化 | 
您现在的位置: IDC资讯网 >> 网络编程 >> Asp.net编程 >> 正文
.Net基础:ASP.NET中的session存储模式运用           ★★★
.Net基础:ASP.NET中的session存储模式运用
点击数: 更新时间:2009-10-16 17:00:34

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,否则会出现错误!


以上内容均来自网络,由 稳速网络 搜集整理,如有侵权请联系我们立即删除,如转载请注明原文出处,并保留以下内容。
    [稳速网络] http://www.765.com.cnhttp://www.wsu.cn 是深圳市稳速网络科技有限公司的网络服务品牌,专业经营域名注册虚拟主机网站建设服务器租用托管等业务。经过多年的高速发展,“稳速网络”已经成为我国一家知名的互联网服务提供商。
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新推荐  更多内容
    最新热门  更多内容
    资讯中心首页
    虚拟主机资讯 | 域名注册资讯 | 托管租用资讯 | 网络编程 | 网站备案 | 系统安全 | 源码下载 | ASP | Asp.Net | PHP | MSSQL |MYSQL |
    关于我们 | 联系我们 | 产品价格 | 代理加盟 | 咨询反馈 | 诚聘英才 | 在线对话系统 | ASP技术网 | 帮助中心 | 网站地图
    ICP/ISP证B2-20050322
    ICP/ISP经营许可证编号:粤ICP证B2-20050322 网站备案号:粤B2-20050322号
    客服热线:0755-26499456 0755-26499435 [共8线] 24小时值班:0755-21852765 [更多]
    客服QQ:
    [ 63103 ]
    [ 959260 ]
    代理咨询:
    [ 519065 ]
    [更多]
    客户服务中心:深圳市南山区桃园路前海金岸金丰阁706  邮编:518052
    本站推广词:动态空间 | 网站空间 | 虚拟主机 | 深圳网站建设 | 空间购买 | 域名空间 | ASP空间申请购买
    服务范围:广州·深圳·东莞·珠海·汕头·惠州·中山·佛山·上海·重庆等全国其它地区
    广东省深圳市稳速网络科技有限公司版权所有 严禁以任何形式进行复制、抄袭