|
由于我前段时间在使用一个在一个本页的查询里使用了session存储了一个dataset,
我的一起学.net的朋友就说我那样是浪费资源。会降低性能的
我首先考虑的是session存储在那里的
是客服端还是在服务器端呢
下面有篇文章给了我明确的解释
是可以在服务器上也可以在本机上的。还可以是存储在mssql里的
那样我就不用担心使用太多的session会降低服务器的性能了,
具体的测试我还没做过,我想那样强大的一个东西,不会是就有存一些小东西用的吧。在窗体件的通信方面我决得是很好用的一个东西,
文章的内容如下:
Session丢失已经是一种习以为常的问题了,在自己也了解一些如何解决的问题,但是也一直没有机会去用,现在由于新的项目要在B/S下开发,所以不得不让我考虑Session的问题。
解决session丢失的问题有两种方法:1)将session保存在一台sate server中。2)将session保存在sql server中。我们使用的数据库是oracle,不想再装一个数据库,所以用了第一种方法。
首先根据网上查的资料对webconfig文件中session部分进行修改。如下:
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=10.164.222.122:42424" stateNetworkTimeout="14400" /> <machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1" />
然后再在10.164.222.122 这台电脑上的asp.net state server 服务启动
这样基本上就行了。体验一下。
我用了一个测试程序,在3个小时以后session仍然可用,更绝的是我的电脑都重起了,在其它电脑上打开的网页中session仍然可用。一番体验以后,感觉还真不错。
.NET Framework 常规参考
<sessionState> 元素 为当前应用程序配置会话状态设置。
<configuration> <system.web> <sessionState>
<sessionState mode="OffInProcStateServerSQLServer" cookieless="truefalse" timeout="number of minutes" stateConnectionString="tcpip=server:port" sqlConnectionString="sql connection string" stateNetworkTimeout="number of seconds"/> 必选属性 属性 选项 说明 mode 指定在哪里存储会话状态。 Off 指示会话状态未启用。 InProc 指示在本地存储会话状态。 StateServer 指示在远程计算机上存储会话状态。 SQLServer 指示在 SQL Server 上存储会话状态。
可选属性 属性 选项 说明 cookieless 指定不具有 Cookie 的会话是否应用于标识客户端会话。 true 指示应使用不具有 Cookie 的会话。 false 指示不应使用没有 Cookie 的会话。默认值为 false。 timeout 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为 20。 stateConnectionString 指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当 mode 为 StateServer 时该属性是必需的。
上一篇:ASP.NET 2.0角色及成员管理
下一篇:Session丢失原因与解决方案小结
|