真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

session丟失如何解決

這篇文章主要講解了“session丟失如何解決”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“session丟失如何解決”吧!

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供做網(wǎng)站、網(wǎng)站制作服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)

在ASP.NET的開(kāi)發(fā)中,總遇到Session丟失.最常見(jiàn)的情況是當(dāng)用戶登錄后將用戶信息保存在Session中例如Session["user"]=user;在其后的頁(yè)面中檢查Session["user"]是否為空,如果為空則要求用戶重新登錄,我們遇到的問(wèn)題是在用戶登錄后的1小段時(shí)間后(也許只有5分鐘),Session["user"]就已經(jīng)丟失了,Session["user"]!=null的判斷就不成立了.

遇到這樣的問(wèn)題我們首先想到的可能是session過(guò)期了,需要設(shè)置web.config中session的過(guò)期時(shí)間,最常見(jiàn)的簡(jiǎn)單設(shè)置就是:

這里的timeout是指的session的過(guò)期時(shí)間單位是分鐘,但是通常這樣的設(shè)置還不能解決你的問(wèn)題,因?yàn)閟ession的默認(rèn)過(guò)期時(shí)間就是20分鐘.

現(xiàn)在我們來(lái)看看session在web.config中的配置,完整的配置如下:

< 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" />

其實(shí)我也很少使用上面這樣完全的配置,但是了解這樣配置的用法是我們解決session過(guò)期的方法之一,下面我們來(lái)看看這段配置的說(shuō)明,下面這段文字來(lái)源于網(wǎng)絡(luò),為了方便大家的查看將其拷貝過(guò)來(lái)了.

mode屬性 設(shè)置將Session信息存儲(chǔ)到哪里

Off 設(shè)置為不使用Session功能

InProc 設(shè)置為將Session存儲(chǔ)在進(jìn)程內(nèi),就是ASP中的存儲(chǔ)方式,服務(wù)器將Session信息存儲(chǔ)在IIS進(jìn)程中,這是默認(rèn)值。

StateServer 設(shè)置為將Session存儲(chǔ)在獨(dú)立的狀態(tài)服務(wù)中。

SQLServer 設(shè)置將Session存儲(chǔ)在SQL Server中。

cookieless屬性 設(shè)置客戶端的Session信息存儲(chǔ)到哪里

ture 使用Cookieless模式

false 使用Cookie模式,這是默認(rèn)值。

timeout屬性 設(shè)置經(jīng)過(guò)多少分鐘后服務(wù)器自動(dòng)放棄Session信息。默認(rèn)為20分鐘 ,也就是我們通常說(shuō)的過(guò)期時(shí)間.

stateConnectionString屬性 設(shè)置將Session信息存儲(chǔ)在狀態(tài)服務(wù)中時(shí)使用的服務(wù)器名稱和端口號(hào),例如:"tcpip=127.0.0.1:42424”。當(dāng)mode的值是StateServer是,這個(gè)屬性是必需的。

sqlConnectionString屬性 設(shè)置與SQL Server連接時(shí)的連接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。當(dāng)mod e的值是SQLServer時(shí),這個(gè)屬性是必需的 。

stateNetworkTimeout屬性 設(shè)置當(dāng)使用StateServer模式存儲(chǔ)Session狀態(tài)時(shí),經(jīng)過(guò)多少秒空閑后,斷開(kāi)Web服務(wù)器與存儲(chǔ)狀態(tài)信息的服務(wù)器的TCP/IP連接的。默認(rèn)值是10秒鐘。

第二個(gè)解決此問(wèn)題的方法就是,不使用Inproc模式保存session而改用StateServer模式保存.

使用上面的配置需要關(guān)注下面的幾個(gè)問(wèn)題:

1.要在服務(wù)中開(kāi)啟“ASP.NET State Service”服務(wù)(設(shè)為“自動(dòng)”)

2.如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注冊(cè) 表:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state /Parameters 節(jié)點(diǎn) → 將 AllowRemoteConnection 的鍵值設(shè)置成“1”(1 為允許遠(yuǎn)程電腦的連接,0 代表禁止)→ 設(shè)置 Port (端口號(hào))

3.session中存儲(chǔ)非序列化的對(duì)象,如果違反會(huì)拋出 無(wú)法序列化會(huì)話狀態(tài)。在 “StateServer”或“SQLServer”模式下,ASP.NET 將序列化會(huì)話狀態(tài)對(duì)象,因此不允許使用無(wú)法序列化的對(duì)象或 MarshalByRef 對(duì)象。如果自定義會(huì)話狀態(tài)存儲(chǔ)在“Custom”模式下執(zhí)行了類似的序列化,則適用同樣的限制。 這樣的異常。如果向session存儲(chǔ)自定義的對(duì)象,那么該對(duì)象的類上一定要加上[Serializable]注釋,在本例中需要將user的類型標(biāo)注為可序列化。

下面我們來(lái)看看Inproc模式和StateServer模式的優(yōu)缺點(diǎn):

InProc模式

優(yōu)點(diǎn):獲取session狀態(tài)的速度快,session狀態(tài)直接存儲(chǔ)在iis的進(jìn)程中。

缺點(diǎn):易丟失,經(jīng)常需要重新登錄,實(shí)際上在幾個(gè)項(xiàng)目中我也遇到了這個(gè)問(wèn)題.

StateServer模式

優(yōu)點(diǎn):session狀態(tài)單獨(dú)存儲(chǔ)在一個(gè)進(jìn)程中,不會(huì)因?yàn)閕is或者應(yīng)用的重啟而丟失狀態(tài)

缺點(diǎn):獲取session狀態(tài)的速度比InProc慢一些,畢竟是兩個(gè)不同的進(jìn)程。

也許你想找出session在什么地方弄丟的,那么你可以嘗試下面的操作:

你還記得ASP.NET中有個(gè)global.asax文件嗎?里面有兩個(gè)關(guān)于session的兩個(gè)事件

Session_Start :在一個(gè)新用戶訪問(wèn)應(yīng)用程序 Web 站點(diǎn)時(shí),該事件被觸發(fā)。

Session_End :在一個(gè)用戶的會(huì)話超時(shí)、結(jié)束或他們離開(kāi)應(yīng)用程序 Web 站點(diǎn)時(shí),該事件被觸發(fā)。

感謝各位的閱讀,以上就是“session丟失如何解決”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)session丟失如何解決這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


本文名稱:session丟失如何解決
分享URL:http://weahome.cn/article/googgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部