Session的三種處理方式

2022-03-06 12:08:06 字數 2688 閱讀 9808

簡單來說,session就是伺服器給客戶端的乙個編號,當一台web伺服器執行時,可能 是有多個使用者都在瀏覽這台伺服器上的**,當每個使用者首次與這台伺服器建立連線時,它就與這個伺服器建立了乙個session,同時伺服器就會自動為其分 配乙個sessionid,用以標識這個使用者的唯一身分,這個session就是有伺服器隨機產生的乙個由24個字元組成的字串。

這個唯一的sessionid還是有很大的實際意義,當乙個使用者提交表單時,瀏覽器就會將使用者的sessionid自動附加在http頭資訊中,當伺服器 處理完這個表單後,就會將結果返回給sessionid所對應的使用者。

如下是web.config如何配置session的:

其中各個節點屬性:

mode: session的儲存方式(必有的屬性)。

inproc:將session存到程序內(這是default值。)

off:禁用session.

stateserver:將session存到獨立的狀態服務中(asp.net state service).

sqlserver:將session存到sqlserver中。

cookieless:設定客戶端session儲存的方式。

false:使用cookie模式(default).

true:使用cookieless模式。

timeout:設定session過期時間(default is 20 minutes)

stateconnectionstring: 設定session獨立存放的狀態服務所在伺服器的名稱(位址)和埠號,當mode=「stateserver時,這個屬性就是必 須的。

sqlconnectionstring:設定與sqlserver的連線字串,當mode="sqlserver"時,這個屬性時必須的。

statenetworktimeout:設定當mode=「stateserver」時,經過多少秒空閒後, 斷開web伺服器與儲存狀態資訊伺服器的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的資料庫。在

%windir%\microsoft.net\framework\v2.0.50727 下有個名為: installsqlstate.sql 的sql指令碼檔案. 這個指令碼是專門用來建儲存session的資料庫以及乙個維護session資訊資料庫的sql server**作業的.

另外檢視管理->sql server**->作業,會發現多了乙個名為:

aspstate_job_deleteexpiredsession的作業,這個作業實際上是每分鐘去aspstatetempsession中 刪除過期的session資訊。

上面的方法是建立session資料庫的乙個」官方「方法,但在實際的應用中一般沒這麼去建,而是採用另一種方法,使用下面這段命令來自動建立 session資料庫:

aspnet_regsql.exe -s servername\instancename -u user -p password -d dbname -ssadd -sstype c

此命令將在servername\instancename建立dbname的資料庫, 使用者儲存session的資料庫. 此資料庫中包含了儲存過程和使用者表. 同時在sql server** -> 作業 中也加入了相應的作業.

然後在web.config中設定好配置資訊:

mode="sqlserver" sqlconnectionstring="data source=servername\instancename; integrated security=sspi;"

"integrated security=sspi;" 是指使用windows整合身份驗證.

如果使用sql使用者登陸方式. 則在sqlconnectionstring中設定好"userid=sa; password=***".

這樣一來就可以將session存放到sqlserver中了

程式中三種不同的出錯處理方式比較

在程式設計中,常用下列3種不同的出錯處理方式 1 用exit終止執行並報告錯誤 2 以函式的返回值區別正確或錯誤返回 3 設定乙個整型變數的函式引數以區別正確返回或某種錯誤返回 它們有什麼樣的優缺點呢?第一種 用exit語句退出,是應用於發生關鍵性錯誤,比如你想開啟檔案並用於讀取或寫如時,或者動態分...

程式設計中的三種不同出錯的處理方式及其優缺點

文章 在程式設計中,常用下列3種不同的出錯處理方式 1 用exit終止執行並報告錯誤 2 以函式的返回值區別正確或錯誤返回 3 設定乙個整型變數的函式引數以區別正確返回或某種錯誤返回 它們有什麼樣的優缺點呢?第一種 用exit語句退出,是應用於發生關鍵性錯誤,比如你想開啟檔案並用於讀取或寫如時,或者...

在框架中獲取會話session的三種方式

第一種 耦合性最強方式,獲取的原始的三個物件 步驟如下 1.獲取請求 2.獲取會話 3.獲取應用程式 第二種 解耦合方式 1.獲取請求 maprequest map actioncontext.getcontext get request 2.獲取會話 mapsession actioncontex...