ASP.NET如何將sessionState写到SQL Server中?

问:
ASP.NET如何將sessionState写到SQL Server中?

因为我是使用了Application Center的NLB(Network Loading Balanceb)有多台服务器,他们的Session状态都各在自己的内存,但是当一个服务器此时Set Offline的话,状态将丢失,看到ASP.NET好像有一个SQL Server保存Session的功能.

______________________________________________________________________________________________
答1:
将Session值储存于SQL Server中
------2002-11-4 14:13:58 

  一般情况下,我们喜欢使用Session储存我们的变量。Asp.Net提供了下面一些方法储存Session的值:
InProc

State Server

SQL Server

“InProc”表示我们使用传统ASP一样的方法储存Session的值,而且“State Server”则表示使用另外一台主机来储存Session的值。当然我们也能使用SQL Server储存值,我们这篇文章就专门用于讲解这种方法。

运行InstallSqlState.sql文件

首先需要在Winnt/Microsoft.Net中找到InstallSqlState.sql文件,然后在SQL Server 中执行它。在我的机器中,它存在于E:/WINNT/Microsoft.NET/Framework/v1.0.2914/目录中。这个文件是微软自己提供的,里面有很全的SQL语句,大家放心使用。下图就是生成的数据表。

图片地址:http://tech.enet.com.cn/document/images/200202261035530101.jpg



修改你的web.config文件,指定Session的mode为SQL Server

将web.config的sessionState部分改成:


<sessionState mode="SQLServer"

sqlConnectionString="data source=

WIN2000;userid=

sa;password=" cookieless= "false"timeout=

"20" />


创建Asp.Net Web Forms

下面就建立一个测试的ASP.net程序,使用Session程序这里就不用多说了,下面是我的程序的截图。这个程序只是简单的储存一个字符串数据于Session中,然后再显示这个数据在Label控件中。





现在所有的Session变量都储存在数据表中,而不是内存中了。你可打开ASPStateTempSessions表来查看这些Session数据了。

图片地址:http://tech.enet.com.cn/document/images/200202261035530102.jpg

删除这些数据库和表

如果你不喜欢这个数据储存方式,看得实在是不爽,那么你可以把这些表和数据库完全删除掉。这个也不要担心这种删除会影响数据库(因为害怕误删除一些数据),因为微软同样也得供给你们一个删除SQL 文件,名叫UnintallSQLState.sql。它与IntallSQLState.sql一样放在.Net的Config目录中。

 

______________________________________________________________________________________________
答2:
你可以改变Session的存储位置来试试.
1.存储在Windows服务中
  启动asp.net state service 服务(net start aspnet_state)
   修改Web.config
     <configuration>
       <system.web>
          <sessionState mode="StateServer"
             stateConnectionString="tcpip=127.0.0.1:42424" />
       </system.web>
     </configuration>
2.存储在数据库中
  在microsoft sql server query analyzer 中运行installsqlstate.sql,这个文件在     "C:/WINNT/Microsoft.NET/Framework/v1.1.4322"下面找
  修改Web.config
     <configuration>
       <system.web>
          <sessionState mode="SQLServer"
             sqlConnectionString="server=127.0.0.1;UID=sa;PWD=secret" />
       </system.web>
     </configuration>
    重启SQL server和SQL Server Agent服务.
  可以用下面的SQL 查询会话
   select * from AspStateTempSessions
'============================

______________________________________________________________________________________________
答3:
Underpinnings of the Session State Implementation in ASP.NET
http://msdn.microsoft.com/library/en-us/dnaspp/html/aspnetsessionstate.asp?frame=true




HOW TO: Configure ASP.NET for Persistent SQL Server Session State Management
http://support.microsoft.com/default.aspx?scid=kb;en-us;311209

______________________________________________________________________________________________
答4:
When you use the original SQL Server mode session state management script files (InstallSqlState.sql and UninstallSqlState.sql), the ASPStateTempApplications and the ASPStateTempSessions tables are created in the tempdb database to store the session data. However, the session state data is lost if you restart the computer that is running SQL Server.

The persisting versions of the scripts (InstallPersistSqlState.sql and UninstallPersistSqlState.sql) resolve this problem by creating these tables in the ASPState database instead. Therefore, the session data is retained after you restart the computer that is running SQL Server.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值