使Session不丟失的方法之一的體驗

來源:互聯網
上載者:User
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="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
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 時該屬性是必需的。
sqlConnectionString 為 SQL Server 指定連接字串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。當 mode 為 SQLServer 時該屬性是必需的。
stateNetworkTimeout 在使用 StateServer 模式儲存工作階段狀態時,指定在放棄會話之前 Web 服務器和狀態伺服器之間的 TCP/IP 網路連接閒置時間(以秒為單位)。預設值為 10。

備忘
使用 StateServer 模式

確保運行 ASP.NET 狀態服務的伺服器是要儲存工作階段狀態資訊的遠程伺服器。該服務與 ASP.NET 一起安裝,其預設位置為 <磁碟機>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe。
在應用程式的 Web.config 檔案中,設定 mode=StateServer 並設定 stateConnectionString 屬性。例如,stateConnectionString="tcpip=sarath:42424"。
使用 SQLServer 模式

在運行 SQL Server 的電腦(它將儲存工作階段狀態)上運行 InstallSqlState.sql(預設的安裝位置為 <磁碟機>:\systemroot\Microsoft.NET\Framework\version)。這將建立一個名為 ASPState 的資料庫,該資料庫具有新的預存程序並且在 TempDB 資料庫中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
在應用程式的 Web.config 檔案中,設定 mode=SQLServer 並設定 sqlConnectionString 屬性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。
樣本
以下樣本指定若干工作階段狀態配置設定。

<configuration>
<system.web>
<sessionState mode="InProc"
cookieless="true"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
要求
包含於:<system.web>

Web 平台:IIS 5.0、IIS 5.1、IIS 6.0

設定檔:Machine.config、Web.config

配置節處理常式:System.Web.SessionState.SessionStateSectionHandler

請參見
ASP.NET 配置 | ASP.NET 設定架構 | SessionStateModule



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。