大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 session丟失的解決方法

session丟失的解決方法

更新時間:2022-01-25 11:31:07 來源:動力節點 瀏覽1825次

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

session丟失的解決方法

遇到這樣的問題我們首先想到的可能是session過期了,需要設置web.config中session的過期時間,最常見的簡單設置就是:

<sessionState mode="InProc" timeout="20" />這里的timeout是指的session的過期時間單位是分鐘,但是通常這樣的設置還不能解決你的問題,因為session的默認過期時間就是20分鐘.

現在我們來看看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" />

其實我也很少使用上面這樣完全的配置,但是了解這樣配置的用法是我們解決session過期的方法之一,下面我們來看看這段配置的說明,下面這段文字來源于網絡,為了方便大家的查看將其拷貝過來了.

mode屬性 設置將Session信息存儲到哪里

Off 設置為不使用Session功能

InProc 設置為將Session存儲在進程內,就是ASP中的存儲方式,服務器將Session信息存儲在IIS進程中,這是默認值。

StateServer 設置為將Session存儲在獨立的狀態服務中。

SQLServer 設置將Session存儲在SQL Server中。

cookieless屬性 設置客戶端的Session信息存儲到哪里

ture 使用Cookieless模式

false 使用Cookie模式,這是默認值。

timeout屬性 設置經過多少分鐘后服務器自動放棄Session信息。默認為20分鐘 ,也就是我們通常說的過期時間.

stateConnectionString屬性 設置將Session信息存儲在狀態服務中時使用的服務器名稱和端口號,例如:"tcpip=127.0.0.1:42424”。當mode的值是StateServer是,這個屬性是必需的。

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

stateNetworkTimeout屬性 設置當使用StateServer模式存儲Session狀態時,經過多少秒空閑后,斷開Web服務器與存儲狀態信息的服務器的TCP/IP連接的。默認值是10秒鐘。

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

使用上面的配置需要關注下面的幾個問題:

1.要在服務中開啟“ASP.NET State Service”服務(設為“自動”)

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

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

下面我們來看看Inproc模式和StateServer模式的優缺點:

InProc模式

優點:獲取session狀態的速度快,session狀態直接存儲在iis的進程中。

缺點:易丟失,經常需要重新登錄,實際上在幾個項目中我也遇到了這個問題.

StateServer模式

優點:session狀態單獨存儲在一個進程中,不會因為iis或者應用的重啟而丟失狀態

缺點:獲取session狀態的速度比InProc慢一些,畢竟是兩個不同的進程。

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

你還記得ASP.NET中有個global.asax文件嗎?里面有兩個關于session的兩個事件

Session_Start :在一個新用戶訪問應用程序 Web 站點時,該事件被觸發。

Session_End :在一個用戶的會話超時、結束或他們離開應用程序 Web 站點時,該事件被觸發。

以上就是關于“session丟失的解決方法”的介紹,如果您想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容詳細,從入門到精通都有,適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久精品国语 | 中国精品久久 | 国产成人精品日本亚洲语音2 | 99国内视频| 欧美超级碰碰 | 久久久久久久99精品免费 | 久久久久99精品成人片三人毛片 | 久久高清免费视频 | 免费看欧美一级特黄a大片 免费看欧美一级特黄a大片一 | 日韩国产成人精品视频人 | 99精品视频看国产啪视频 | 91香蕉国产视频 | 国产成人精品日本亚洲网站 | 97视频免费上传播放 | 夜夜骑加勒比 | 欧美日韩中文视频 | 国内精品久久久久影院老司 | 国产69精品久久久久99尤物 | 夜夜爽天天操 | 九九热视频这里只有精品 | 日本老年人精品久久中文字幕 | 高清黄色直接看 | 免费国产精品视频 | 人人揉揉香蕉大免费不卡 | 亚洲欧美日韩国产综合专区 | 草草影院国产第一页 | 特级毛片免费视频观看 | 国产欧美精品午夜在线播放 | 四虎影视8848a四虎在线播放 | 欧美白人猛性xxxxx交69 | 精品国产免费久久久久久 | 欧美一级毛片免费大全 | 亚洲精品一区亚洲精品 | 日本大臿亚洲香蕉大片 | 国产福利资源在线 | 一级毛片直接看 | 亚洲国产精品一区二区三区 | 尤物精品视频在线观看 | 99久久国产免费中文无字幕 | 中文字幕日韩女同互慰视频 | 午夜色大片在线观看 |