大战熟女丰满人妻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在線學習,里面的課程內容詳細,從入門到精通都有,適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美成人免费一级人片 | 天天综合欧美 | 国产精品98福利小视频 | 国产成人欧美 | 久久99综合 | 黄色毛片小视频 | 性欧美视频在线观看 | 欧美综合影院 | 天堂毛片 | 日韩免费影视 | 草久视频 | 97视频免费在线 | 国产日韩精品一区在线观看播放 | 国产成人一区二区三区精品久久 | 天天爽夜夜爽夜夜爽精品视频 | 日韩高清不卡在线 | 久久亚洲精品中文字幕 | 国语国产真人对白毛片 | 国产目拍亚洲精品一区二区三区 | 亚洲精品福利视频 | 私人影院免费 | 一本一本久久α久久精品66 | 伊人精品在线视频 | 国产婷婷综合在线视频中 | 国产成+人+综合+亚洲 欧美 | 日日日日日 | 欧美日韩国产高清视频 | 欧美国产成人精品一区二区三区 | 亚洲精品一区久久狠狠欧美 | 国产精品免费久久久免费 | 91精品刘玥在线播放 | 一级日本高清视频免费观看 | 另类久久 | 欧美中文字幕在线播放 | 亚洲 欧美 bt | 99久热在线精品视频观看 | 久热中文字幕在线观看 | 精品免费视在线观看 | 中文字幕一区二区三区四区 | 奇米免费视频 | 狠狠色狠狠色综合久久第一次 |