這個唯一的SessionId還是有很大的實際意義,,當一個用戶提交表單時,,瀏覽器就會將用戶的SessionId自動附加在HTTP頭信息中,當服務器 處理完這個表單后,,就會將結果返回給SessionId所對應的用戶,。 如下是Web.config如何配置Session的: <configuration> <system.web> <sessionState mode=" Off | InProc | StateServer | SQLServer " cookieless=" true | false " timeout=" number of minutes " stateConnectionString=" tcpip=server:port " sqlConnectionString=" sql connection string " stateNetworkTimeout=" number of seconds " /> </system.web> </configuration> 其中各個節(jié)點屬性: mode: Session的存儲方式(必有的屬性)。 InProc:將Session存到進程內(這是Default值,。) off:禁用Session. StateServer:將Session存到獨立的狀態(tài)服務中(Asp.net State Service). SqlServer:將Session存到SqlServer中,。 Cookieless:設置客戶端Session存儲的方式。 false:使用Cookie模式(default). true:使用Cookieless模式,。 timeout:設置Session過期時間(default is 20 minutes) stateConnectionString: 設置Session獨立存放的狀態(tài)服務所在服務器的名稱(地址)和端口號,,當mode=“stateserver時,這個屬性就是必 須的,。 sqlConnectionString:設置與Sqlserver的連接字符串,,當mode="sqlserver"時,這個屬性時必須的。 stateNetWorkTimeout:設置當mode=“StateServer”時,,經(jīng)過多少秒空閑后,, 斷開web服務器與存儲狀態(tài)信息服務器的TCP/IP連接(default is 10 seconds). asp.net中客戶端Session的存儲。 asp.net中,,默認是使用Cookie存儲Session的,,如果是將cookieless="false",改成 cookieless="true",則session就不用cookie來存儲了,,而是使用url來存儲,。 asp.net服務器端session存儲在進程內(inproc) 當mode="Inproc"時,服務器的Session存儲在IIS進程中,,當IIS關閉,,重啟時,這些Session信息就會丟失,,但這種模式最大的 好處就是性能提高,。 asp.net服務器端Session存儲在進程外(StateServer) 當mode="StateServer"時,服務器的Session就存儲在"ASP.NET State Server"這個服務的進程中,,在服務中找到名為:“ASP.NET State Service”的服務,,啟動這個服務,在資源管理器的進程中就能找到一個名 為:“aspnet_state.exe"的進程,,這個就是我們保存 Session的進程,。 ”ASP.NET State Server"服務可以與Web服務器分開.eg:web服務器在192.168.0.100上,“asp.net state service"服務在192.168.0.101上,,則可以進行設置: mode="StateServer" stateConnection="tcpip=192.168.1.101:42424". asp.net服務器端Session存儲到SQLServer中(SQLServer), 當mode="sqlserver"時,,服務器的Session就是存儲到Sql server中建立一個存儲Session的數(shù)據(jù)庫。在 %windir%\Microsoft.NET\Framework\v2.0.50727 下有個名為: InstallSqlState.sql 的sql腳本文件. 這個腳本是專門用來建存儲Session的數(shù)據(jù)庫以及一個維護Session信息數(shù)據(jù)庫的SQL Server代理作業(yè)的. 執(zhí)行此sql腳本后,,會看到一個新增的aspstate數(shù)據(jù)庫,,但這個數(shù)據(jù)庫中,只有存儲過程,,沒有用戶表,,用戶表放到了tempdb這個數(shù)據(jù)庫中去 了,ASpstateTempSessions和ASPStateTempApplications,Session信息存儲到了 ASPStateTempApplication存儲了asp中Application對象信息,。 另外查看管理->SQL Server代理->作業(yè),,會發(fā)現(xiàn)多了一個名為: ASPState_job_DeleteExpiredSession的作業(yè),這個作業(yè)實際上是每分鐘去ASPStateTempSession中 刪除過期的Session信息,。 上面的方法是建立Session數(shù)據(jù)庫的一個”官方“方法,,但在實際的應用中一般沒這么去建,而是采用另一種方法,,使用下面這段命令來自動創(chuàng)建 Session數(shù)據(jù)庫: aspnet_regsql.exe -S ServerName\InstanceName -U User -P Password -d DBName -ssadd -sstype c 此命令將在ServerName\InstanceName建立DBName的數(shù)據(jù)庫, 用戶存儲Session的數(shù)據(jù)庫. 此數(shù)據(jù)庫中包含了存儲過程和用戶表. 同時在SQL Server代理 -> 作業(yè) 中也加入了相應的作業(yè). 然后在Web.config中設置好配置信息: mode="SQLServer" sqlConnectionString="data source=ServerName\InstanceName; Integrated Security=SSPI;" "Integrated Security=SSPI;" 是指使用Windows集成身份驗證. 如果使用SQL用戶登陸方式. 則在sqlConnectionString中設置好"userid=sa; password=***". 這樣一來就可以將Session存放到SQLServer中了
|