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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 九九热精品在线观看 | 一级a美女毛片 | 色婷婷亚洲综合 | 伊人久久婷婷丁香六月综合基地 | 久久国产乱子伦精品免费看 | 精品在线一区二区三区 | 国产91久久精品一区二区 | 日本一级毛片一级裸片 | 亚洲国产精品综合福利专区 | 高清久久 | 亚洲精品国产综合一线久久 | 色婷婷精品视频 | 亚洲国产日韩a在线亚洲 | 一区精品视频 | 97爱爱爱 | 四虎在线精品免费高清在线 | 国产成人区 | 欧美一区二区三区精品 | 最新亚洲情黄在线网站 | 岛国精品在线观看 | 国产一毛片 | 特黄级| 浮力影院欧美三级日本三级 | 久久婷婷激情综合中文字幕 | 久久国产免费观看精品1 | 青青青青久久国产片免费精品 | 国产成人精品曰本亚洲77美色 | 免费视频日韩 | 最新国产三级久久 | 一级毛片一级毛片免费毛片 | 精品午夜国产在线观看不卡 | 伊人色网站 | 日日操天天爽 | 九九热国产视频 | 亚洲日本中文 | 久久亚洲国产中v天仙www | 国产精品免费大片 | 久久久久国产成人精品亚洲午夜 | h片在线 | 亚洲综合色秘密影院秘密影院 | 欧美色99|