php session不穩(wěn)定的解決辦法:首先在配置文件中設(shè)置sessionState節(jié)點;然后把類設(shè)為可序列化的類;最后啟動“asp.net state service”即可。
創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為衛(wèi)東企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站,衛(wèi)東網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
推薦:《PHP視頻教程》
解決session不穩(wěn)定的問題
公司的系統(tǒng)一直以來都會出現(xiàn)session突然丟失的情況,昨天想了一個法子,但行不通,今天上午通過搜索資料解決了它。
昨天我是想通過新建一個數(shù)據(jù)表來存儲用戶登錄的信息,但是,要標(biāo)記一個用戶的時候,想用IP來標(biāo)記,覺得不太現(xiàn)實,因為有時候?qū)ν饩W(wǎng)的IP地址是一樣的,于是想用MAC地址來解決,對過sendarp的方法可以得到指定IP的MAC,但是這也僅僅適用于局域網(wǎng),非局域網(wǎng)是無法實現(xiàn)的,于是這種思路到此宣告破產(chǎn)。除非在客戶端通過js去獲取再發(fā)送到服務(wù)端,但考慮到不用客戶端cookiess的話每次都要查很麻煩,于是放棄。
今天在網(wǎng)上發(fā)現(xiàn),可以在配置文件中設(shè)置sessionState節(jié)點:
必須有的屬性是
屬性 選項 描述 mode 設(shè)置將Session信息存儲到哪里 Off 設(shè)置為不使用Session功能 InProc 設(shè)置為將Session存儲在進(jìn)程內(nèi),就是ASP中的存儲方式,這是默認(rèn)值。 StateServer 設(shè)置為將Session存儲在獨立的狀態(tài)服務(wù)中。 SQLServer 設(shè)置將Session存儲在SQL Server中。
可選的屬性是:
屬性 選項 描述 cookieless 設(shè)置客戶端的Session信息存儲到哪里 ture 使用Cookieless模式 false 使用Cookie模式,這是默認(rèn)值。 timeout 設(shè)置經(jīng)過多少分鐘后服務(wù)器自動放棄Session信息。默認(rèn)為20分鐘 stateConnectionString 設(shè)置將Session信息存儲在狀態(tài)服務(wù)中時使用的服務(wù)器名稱和端口號,例如:"tcpip=127.0.0.1:42424”。當(dāng)mode的值是StateServer是,這個屬性是必需的。 sqlConnectionString 設(shè)置與SQL Server連接時的連接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。當(dāng)mode的值是SQLServer時,這個屬性是必需的。 stateNetworkTimeout 設(shè)置當(dāng)使用StateServer模式存儲Session狀態(tài)時,經(jīng)過多少秒空閑后,斷開Web服務(wù)器與存儲狀態(tài)信息的服務(wù)器的TCP/IP連接的。默認(rèn)值是10秒鐘。
然后,啟動asp.net state service。
注意要把類設(shè)為可序列化的類!才可以加到session中。
System.Web.SessionState.HttpSessionState session = HttpContext.Current.Session; session.Add("user", obj); HttpContext.Current.Session.Add("user", obj); if (obj.USER_DIST_ID == "0000") { HttpContext.Current.Session.Add("sDistID", obj.USER_DIST_ID); } System.Web.Security.FormsAuthentication.SetAuthCookie(obj.USER_ID , false); 。。。