如何用ASP.NET里的State Management Database来储存Session Variable。

(華版)

很多人都会在地一时间里想到用Cookies(HttpCookies)来储存某些资料;以便在游览到另一个WebForm时,依然能够从用户端读取所储存的资料。但是,万一如果用户的游览器不容许Cookies。。。那就不是完了吗。。。更何况Cookies只能容纳4K Byte的资料而且!

        Dim DemoCookie As New HttpCookie("sampleCookie")
        
Dim time As DateTime = DateTime.Now
        DemoCookie.Values.Add(
"Time", time.ToString())
        DemoCookie.Expires 
= time.AddDays(5)
        Response.Cookies.Add(DemoCookie)
        Response.Redirect(
"sample.aspx")


所以就要改用server side的SQL数据库方式而放弃client side的Cookies;更何况用SQL数据库是非常简单,只需安装.NET Framework所提供的InstallSqlState.sql script和修改一下Web.Config文件就行了。其它就如平常写Session变量一模一样。

InstallSqlState.sql可以在 C:\WINDOWS\Microsoft.NET\Framework\(版本号码)\ 文件夹里找到。

以下就是需要修改的Web.Config里的sessionState属性:

    <sessionState 
            
mode="SQLServer"
            stateConnectionString
="tcpip=127.0.0.1:42424"
            sqlConnectionString
="data source=localhost; integrated security=true"
            cookieless
="false" 
            timeout
="20" 
    
/>

把原有的
  1. mode=InProc改去mode=SQLServer。
  2. 修改sqlConnectionString字符串,但是在这里不用填写Initial Catalog。因为AspState是默人Catalog,
      也就InstallSqlState.sql所安装的ASP State Management database。
  3. 把timeout修改去你想要的session expire值;timeout的单位以分钟来计算。
  4. cookieless="false"代表SesionID容纳在URL里,比如http://server/(SessionID)/Sample.aspx
      所以,此属性的值一般都是false。

        Dim time As DateTime = DateTime.Now
        Session(
"Time"= time.ToString())

posted on 2005-04-14 10:32  克仔  阅读(1982)  评论(5编辑  收藏  举报