由于我前段時間在使用一個在一個本頁的查詢里使用了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="tcp 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>
可選屬性
屬性 選項 說明
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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1489931
新聞熱點
疑難解答