亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

ASP.NET中session存儲模式運用

添加時間:2014-8-25 18:33:38  添加: 思海網絡 

在ASP.NET中的Session存儲方式不象asp那樣單一,一共提供了三種存儲方式,由于最近一個2000多人使用的web軟件出現了故障,用戶每天早上在某一時刻出現難以登陸現象,接著Session丟值出現,只有重啟IIS,或機器.這時程序恢復正常了.整天都不會出現同樣的問題 ,但是第二天依舊!這種現象持續了好幾天,我檢查了一下日志文件,高峰每秒訪問人數大概20人左右,同時大概100多人在線,以后訪問人數還會增加,為了解決這個怪問題,先從軟件著手,故而三種方式都應用了一番。

打開web.config文件

< sessionState

mode="InProc"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=127.0.0.1;

Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

其中默認的mode是InProc類型,這種模式和以前ASP模式一樣,就是服務器將Session信息存儲在IIS進程當中,當IIS關閉、重起后這些進程信息都會丟失,但這種模式的性能最高(具體沒測,看書上說),這種模式是asp.NET的默認方式。

由于這種模式出現了故障,當時我的考慮就是由于訪問量過大的原因,導致Inetinfo.exe進程崩潰。用戶難以登陸以致Session丟值出現故障,我采用了另外一種Session的存儲方式把Session信息存儲在進程外。

首先,打開管理工具找到服務,找到名為:ASP.NET State Service的服務,啟動它.并且改成自動啟動。這時你可以在任務管理器中看到一個名為aspnet_state.exe的進程。這就是我們保存session信息的進程。

然后,回到web.config文件中把Mode的值改為StateServer,保存文件。OK.

< sessionState

mode="StateServer"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=192.10.78.76;

User id=sa;password=sa"

cookieless="false"

timeout="20"

/>

這種模式當我們重起IIS,保存的session值不會丟失。另外這種方式還可以把信息保存在其他機器的進程中,不過還要更改 stateConnectionString="tcpip=127.0.0.1:42424",IP地址改為其他機器即可。

另外還采取了其他的措施.比如把數據庫和Web服務器分開,數據庫服務器不提供WEB服務,Web服務器不提供數據庫服務,

然后把連接池擴大,由于ASP.NET中ADO.NET數據訪問默認連接池數量為100, 后來我擴大到6000順便把寫法加上來

“Server=(local);

Database=rgs;

password=sa;

user ID=sa;

Max Pool Size =6000;

Min Pool Size =5;

Pooling=True”

最后把Machine.config中的ProcessModel中的memoryLimit改為95,默認為60,表示內存占用超過60%后iis進程會自動重起。接著還做寫其它一些優化IIS的方法,把注冊表的IIS緩存加大等等 。

當我做完這些優化步驟后,整個軟件運行比較良好,第二天沒有發現堵塞的現象,但是第三天情況又出現了,實在沒辦法,我采取了最后一種ASP.NET中的session存儲方法就是將Session存儲在SQLServer中,我想這樣穩定性應該強些。

要使用SQLServer中,首先在會話狀態的SQLServer的計算機上,運行InstallSqlState.sql或InstallPersistSqlState.sql(默認位置:systemroot\Microsoft.NET\Framework\versionNumber下面)兩個腳本都創建一個名為ASPState的數據庫,兩個腳本的差別在于放置ASPStateTempApplication和ASPStageTempSessions表的位置。InstallSqlState.sql腳本將這些表添加到TempDB數據庫,該數據庫在計算機重起時將丟失數據,而InstallPersistSqlState.sql腳本將這些表添加到ASPState數據庫,該數據庫重啟時保留會話數據。

然后在應用程序的web.config文件中,把< sessionState>元素的mode屬性設置為SQLServer,最后將sqlConnectionString屬性設置為Integrated Security=SSPI;data source=serverName;

< sessionState mode="SQLServer"

sqlConnectionString=" Integrated Security=SSPI;

data source=dataserver;

" cookieless="false" timeout="20"

/>

< /sessionState>

如果部署在其他機器上可以更改為,加上用戶名和密碼

< sessionState

mode="SQLServer"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=192.10.78.76;

User id=sa;password=sa"

cookieless="false"

timeout="20" />

這樣部署完成了,如果不想使用這種可以刪除掉,只要在相應的目錄(systemroot\Microsoft.NET\Framework\versionNumber)找到UninstallPersistSqlState.sql或者UninstallSqlState.sql文件運行即可。這樣就介紹了ASP.NET中的session存儲模式。

最后要注意的是,無論使用StateServer或者SQLServer模式時,當使用session轉換對象時,注意對象要先序列化,就是在類前加上Serializable,否則會出現錯誤!

關鍵字:ASP.NET、數據庫、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站