麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

.NET開發時讓人頭痛的SESSION超時

2019-11-17 02:06:41
字體:
來源:轉載
供稿:網友

.NET開發時讓人頭痛的session超時

前言

不知道大家在使用用.NET的SESSION的時候有沒有遇到過很奇怪的問題,不時候不知道怎么回事,這個SESSION就無緣無故的丟失了 怎么也想不通,不是說SESSION很可靠的嗎?這個問題要好好的反思下,是不是我們在什么地方設置的時候就出問題,還是說 asp.net 的SEESION沒有想象中的可靠。

設置Session超時值

在web.conf配置文件下寫:

<system.web><sessionState mode="InPRoc" timeout="10"/></system.web>

sessionState有四種模式off,inProc,StateServer,SqlServer。

1、off模式

從字面上就可以看出這個是關閉模式,如果當前頁面不需要session的值,為了減少服務器資源,你可以去掉Session的開銷。

或者頁面上

<%@ Page EnableSessionState="false" %>來關閉Session。

2、inProc模式(缺省模式)

它允許“無Cookie”的會話,以及在服務器之外存儲會話數據。ASP.NET會話狀態模塊在Web.config文件中像下面這樣配置:

在這個例子中,mode屬性設為InProc(默認值),表明會話狀態要由ASP.NET存儲到內存中,而且不用Cookie來傳遞會話ID。采取這種方式,不管Cookie還是隱藏表單字段都用不著了。所以,即使網頁中沒有使用表單,也能加入會話。 但是這種方法,應用程序的狀態將依賴于 ASP.NET進程, 當IIS進程崩潰或者正常重啟時,保存在進程中的狀態將丟失。

3、StateServer會話管理

將mode屬性設為StateServer,也就是將會話數據存儲到單獨的內存緩沖區中,再由單獨一臺機器上運行

的Windows服務來控制這個緩沖區。狀態服務全稱是“ASP.NET State Service ”(aspnet_state.exe),計算機管理-服務 里面即可看到此服務,啟動該服務

它由Web.config文件中的stateConnectionString屬性來配置。該屬性指定了服務所在的服務器,以及要監視的端口:

在這個例子中,狀態服務在一臺名為myserver的機器的42424端口(默認端口)運行。要在服務器上改變端口,可編輯HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_stat /Parameters 注冊表項中的Port值。

顯然,使用狀態服務的優點在于進程隔離,并可在Web farm(網站群)中共享。 使用這種模式,會話狀態的存儲將不依賴于iis進程的失敗或者重啟,然而,一旦狀態服務中止,所有會話數據都會丟失。換言之,狀態服務不像SQL Server那樣能持久存儲數據;它只是將數據存儲在內存中。

4、 用SQL Server進行會話管理

ASP.NET還允許將會話數據存儲到一個數據庫服務器中,方法是將mode屬性變成SqlServer。 在這種情況下,ASP.NET嘗試將會話數據存儲到由sqlConnectionString屬性(其中包含數據源以及登錄服務器所需的安全憑證)指定的SQL Server中。

為了用恰當的數據庫對象來配置SQL erver,管理員還需要創建ASPState數據庫,方法是運行

  • WinDir/Microsoft.Net/Framework/Version文件夾中的InstallSqlState.sql腳本(WinDir是服務器的Windows文件夾,而Version是你使用的.NET框架版本的安裝文件夾)。

要配置SQL服務器,可以在命令行中運行SQL Server 提供的命令行工具 osql.exeosql -S [ server name] -U [user] -P [passWord] -i InstallSqlState.sql例如 osql -S (local)/NetSDK -U sa -P "" -i InstallSqlState.sql

在這里用戶名必須是SQL服務器上的sa帳號,或者具有同等權限的其他帳號。有興趣的讀者可以打開這個腳本文件來了解ASP.NET是如何和SQL Server配合實現狀態管理的。

卸載這些表和存儲過程,可以使用UninstallSqlState.sql腳本,使用方法與上面類似。做好必要的數據庫準備工作后,將web.config 文件中的sessionstate 元素的mode改為"sqlserver",并且指定SQL連接字符串。具體如下:

mode="sqlserver"sqlConnectionString="data source=127.0.0.1; userid=sa; password="

配置好SQL Server后,應用程序代碼運行時就和InProc模式沒有什么區別。但要注意的是,由于數據不存儲在本地內存,所以存儲會話狀態的對象需要進行序列化和反序列化,以便通過網絡傳給數據庫服務器,以及從數據庫服務器傳回。這當然會影響性能。通過在數據庫中存儲會話狀態,可分別針對擴展性及可靠性來有效地平衡性能。另外,可以利用SQL Server的集群,使狀態存儲不依賴于單個的SQL Server, 這樣就可以為應用程序提供極大限度的可靠性。


上一篇:關于jquery

下一篇:web.config的奇淫巧技

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人高清成人av片在线看 | 伦理三区| 欧美视频在线一区二区三区 | 国产三级午夜理伦三级 | free japan xxxxhdsex69 | 成人午夜小视频 | 好吊一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 中文字幕综合 | 欧美乱论| www.91在线观看 | 999久久国精品免费观看网站 | 久久精品亚洲一区二区三区观看模式 | 欧美精品一区二区三区在线 | 成年人精品视频 | 精品一区二区久久久久久按摩 | 日日摸夜夜添夜夜添牛牛 | 国产精品久久久久久久久粉嫩 | 久久福利剧场 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 国产精品91在线 | 天天夜天天操 | 精品在线观看一区 | 日韩av电影在线免费观看 | 999插插插| 天天草天天操 | 视频一区二区三区免费观看 | 麻豆蜜桃在线观看 | 成人黄色短视频在线观看 | 欧美成年性h版影视中文字幕 | 国产视频在线观看免费 | 国产91精品欧美 | 国产成年免费视频 | 媚药按摩痉挛w中文字幕 | 久久久久久久久久久影视 | 中国漂亮护士一级a毛片 | 毛片毛片免费看 | 一本色道精品久久一区二区三区 | 99在线热播精品免费 | 北京一级毛片 | 久久精品视频亚洲 |