亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

asp.net session丟失的解決方法

添加時(shí)間:2014-12-29 21:08:57  添加: 思海網(wǎng)絡(luò) 
ASP.NET Session丟失原因: 
由于Asp.net程序是默認(rèn)配置,所以Web.Config文件中關(guān)于Session的設(shè)定如下: 
< sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60'/> 
我們會(huì)發(fā)現(xiàn)sessionState標(biāo)簽中有個(gè)屬性mode,它可以有3種取值:InProc、StateServer?SQLServer(大小寫(xiě)敏感)。默認(rèn)情況下是InProc,也就是將Session保存在進(jìn)程內(nèi)(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),這個(gè)進(jìn)程不穩(wěn)定,在某些事件發(fā)生時(shí),進(jìn)程會(huì)重起,所以造成了存儲(chǔ)在該進(jìn)程內(nèi)的Session丟失。 
哪些情況下該進(jìn)程會(huì)重起呢?微軟的一篇文章告訴了我們: 
1、配置文件中processModel標(biāo)簽的memoryLimit屬性 
2、Global.asax或者Web.config文件被更改 
3、Bin文件夾中的Web程序(DLL)被修改 
4、殺毒軟件掃描了一些.config文件。 
更多的信息請(qǐng)參考PRB: Session variables are lost intermittently in ASP.NET applications 
ASP.NET Session丟失解決辦法: 
前面說(shuō)到的sessionState標(biāo)簽中mode屬性可以有三個(gè)取值,除了InProc之外,還可以為StateServer、SQLServer。這兩種存Session的方法都是進(jìn)程外的,所以當(dāng)aspnet_wp.exe重起的時(shí)候,不會(huì)影響到Session。 
現(xiàn)在請(qǐng)將mode設(shè)定為StateServer。StateServer是本機(jī)的一個(gè)服務(wù),可以在系統(tǒng)服務(wù)里看到服務(wù)名為ASP.NET State Service的服務(wù),默認(rèn)情況是不啟動(dòng)的。當(dāng)我們?cè)O(shè)定mode為StateServer之后,請(qǐng)手工將該服務(wù)啟動(dòng)。 
這樣,我們就能利用本機(jī)的StateService來(lái)存儲(chǔ)Session了,除非電腦重啟或者StateService崩掉,否則Session是不會(huì)丟的(因Session超時(shí)被丟棄是正常的)。 
除此之外,我們還可以將Session通過(guò)其他電腦的StateService來(lái)保存。具體的修改是這樣的。同樣還在sessionState標(biāo)簽中,有個(gè)stateConnectionString='tcpip=127.0.0.1:42424'屬性,其中有個(gè)ip地址,默認(rèn)為本機(jī)(127.0.0.1),你可以將其改成你所知的運(yùn)行了StateService服務(wù)的電腦IP,這樣就可以實(shí)現(xiàn)位于不同電腦上的Asp.net程序互通Session了。 
如果你有更高的要求,需要在服務(wù)期重啟時(shí)Session也不丟失,可以考慮將mode設(shè)定成SQLServer,同樣需要修改sqlConnectionString屬性。關(guān)于使用SQLServer保存Session的操作,請(qǐng)?jiān)L問(wèn)這里。 
在使用StateServer或者SQLServer存儲(chǔ)Session時(shí),所有需要保存到Session的對(duì)象除了基本數(shù)據(jù)類型(默認(rèn)的數(shù)據(jù)類型,如int、string等)外,都必須序列化。只需將[Serializable]標(biāo)簽放到要序列化的類前就可以了。 
如: 
[Serializable] 
public class MyClass 

...... 

具體的序列化相關(guān)的知識(shí)請(qǐng)參這里。 
至此,ASP.NET Session丟失問(wèn)題解決。 
關(guān)于asp.net Session丟失問(wèn)題的總結(jié) 
asp中Session的工作原理: 
asp的Session是具有進(jìn)程依賴性的。ASP Session狀態(tài)存于IIS的進(jìn)程中,也就是inetinfo.exe這個(gè)程序。所以當(dāng)inetinfo.exe進(jìn)程崩潰時(shí),這些信息也就丟失。另外,重起或者關(guān)閉IIS服務(wù)都會(huì)造成信息的丟失。 
asp.net Session的實(shí)現(xiàn) 
asp.net的Session是基于HttpModule技術(shù)做的,HttpModule可以在請(qǐng)求被處理之前,對(duì)請(qǐng)求進(jìn)行狀態(tài)控制,由于Session本身就是用來(lái)做狀態(tài)維護(hù)的,因此用HttpModule做Session是再合適不過(guò)了。 
原因1: 
bin目錄中的文件被改寫(xiě),asp.net有一種機(jī)制,為了保證dll重新編譯之后,系統(tǒng)正常運(yùn)行,它會(huì)重新啟動(dòng)一次網(wǎng)站進(jìn)程,這時(shí)就會(huì)導(dǎo)致Session丟失,所以如果有access數(shù)據(jù)庫(kù)位于bin目錄,或者有其他文件被系統(tǒng)改寫(xiě),就會(huì)導(dǎo)致Session丟失 
原因2: 
文件夾選項(xiàng)中,如果沒(méi)有打開(kāi)“在單獨(dú)的進(jìn)程中打開(kāi)文件夾窗口”,一旦新建一個(gè)窗口,系統(tǒng)可能認(rèn)為是新的Session會(huì)話,而無(wú)法訪問(wèn)原來(lái)的Session,所以需要打開(kāi)該選項(xiàng),否則會(huì)導(dǎo)致Session丟失 
原因3: 
似乎大部分的Session丟失是客戶端引起的,所以要從客戶端下手,看看cookie有沒(méi)有打開(kāi) 
原因4: 
Session的時(shí)間設(shè)置是不是有問(wèn)題,會(huì)不會(huì)因?yàn)槌瑫r(shí)造成丟失 
原因5: 
IE中的cookie數(shù)量限制(每個(gè)域20個(gè)cookie)可能導(dǎo)致session丟失 
原因6: 
使用web garden模式,且使用了InProc mode作為保存session的方式 
ASP.NET Session丟失問(wèn)題解決經(jīng)驗(yàn) 
1. 判斷是不是原因1造成的,可以在每次刷新頁(yè)面的時(shí)候,跟蹤bin中某個(gè)文件的修改時(shí)間 
2. 做Session讀寫(xiě)日志,每次讀寫(xiě)Session都要記錄下來(lái),并且要記錄SessionID、Session值、所在頁(yè)面、當(dāng)前函數(shù)、函數(shù)中的第幾次Session操作,這樣找丟失的原因會(huì)方便很多 
3. 如果允許的話,建議使用state server或sql server保存session,這樣不容易丟失 
4. 在global.asa中加入代碼記錄Session的創(chuàng)建時(shí)間和結(jié)束時(shí)間,超時(shí)造成的Session丟失是可以在SessionEnd中記錄下來(lái)的。 

5. 如果有些代碼中使用客戶端腳本,如java維護(hù)Session狀態(tài),就要嘗試調(diào)試腳本,是不是因?yàn)槟_本錯(cuò)誤引起Session丟失

關(guān)鍵字:session、Asp.net、程序

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站