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

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

ASP.NET Session丟失原因和應(yīng)對策略

添加時間:2014-8-26 21:29:06  添加: 思海網(wǎng)絡(luò) 

正常操作情況下會有ASP.NET Session丟失的情況出現(xiàn)。因為程序是在不停的被操作,排除Session超時的可能。另外,Session超時時間被設(shè)定成60分鐘,不會這么快就超時的。

現(xiàn)在我就把原因和解決辦法寫出來。

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'/>

我們會發(fā)現(xiàn)sessionState標(biāo)簽中有個屬性mode,它可以有3種取值:InProc、StateServer?SQLServer(大小 寫敏感) 。默認(rèn)情況下是InProc,也就是將Session保存在進程內(nèi)(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),這個進程不 穩(wěn)定,在某些事件發(fā)生時,進程會重起,所以造成了存儲在該進程內(nèi)的Session丟失。

哪些情況下該進程會重起呢?微軟的一篇文章告訴了我們:

1、配置文件中processModel標(biāo)簽的memoryLimit屬性

2、Global.asax或者Web.config文件被更改

3、Bin文件夾中的Web程序(DLL)被修改

4、殺毒軟件掃描了一些.config文件。

更多的信息請參考PRB: Session variables are lost intermittently in ASP.NET applications

ASP.NET Session丟失解決辦法:

前面說到的sessionState標(biāo)簽中mode屬性可以有三個取值,除了InProc之外,還可以為StateServer、SQLServer。這兩種存Session的方法都是進程外的,所以當(dāng)aspnet_wp.exe重起的時候,不會影響到Session。

現(xiàn)在請將mode設(shè)定為StateServer。StateServer是本機的一個服務(wù),可以在系統(tǒng)服務(wù)里看到服務(wù)名為ASP.NET State Service的服務(wù),默認(rèn)情況是不啟動的。當(dāng)我們設(shè)定mode為StateServer之后,請手工將該服務(wù)啟動。

這樣,我們就能利用本機的StateService來存儲Session了,除非電腦重啟或者StateService崩掉,否則Session是不會丟的(因Session超時被丟棄是正常的)。

除此之外,我們還可以將Session通過其他電腦的StateService來保存。具體的修改是這樣的。同樣還在sessionState標(biāo)簽 中,有個stateConnectionString='tcpip=127.0.0.1:42424'屬性,其中有個ip地址,默認(rèn)為本機 (127.0.0.1),你可以將其改成你所知的運行了StateService服務(wù)的電腦IP,這樣就可以實現(xiàn)位于不同電腦上的Asp.net程序互通 Session了。

如果你有更高的要求,需要在服務(wù)期重啟時Session也不丟失,可以考慮將mode設(shè)定成SQLServer,同樣需要修改sqlConnectionString屬性。關(guān)于使用SQLServer保存Session的操作,請訪問這里。

在使用StateServer或者SQLServer存儲Session時,所有需要保存到Session的對象除了基本數(shù)據(jù)類型(默認(rèn)的數(shù)據(jù)類型,如int、string等)外,都必須序列化。只需將[Serializable]標(biāo)簽放到要序列化的類前就可以了。

如:

[Serializable]

public class MyClass

{

......

}

具體的序列化相關(guān)的知識請參這里。

至此,ASP.NET Session丟失問題解決。

關(guān)于asp.net Session丟失問題的總結(jié)

asp中Session的工作原理:

asp的Session是具有進程依賴性的。ASP Session狀態(tài)存于IIS的進程中,也就是inetinfo.exe這個程序。所以當(dāng)inetinfo.exe進程崩潰時,這些信息也就丟失。另外,重起或者關(guān)閉IIS服務(wù)都會造成信息的丟失。

asp.net Session的實現(xiàn)

ASP.NET的Session是基于HttpModule技術(shù)做的,HttpModule可以在請求被處理之前,對請求進行狀態(tài)控制,由于Session本身就是用來做狀態(tài)維護的,因此用HttpModule做Session是再合適不過了。

原因1:

bin目錄中的文件被改寫,asp.net有一種機制,為了保證dll重新編譯之后,系統(tǒng)正常運行,它會重新啟動一次網(wǎng)站進程,這時就會導(dǎo)致Session丟失,所以如果有access數(shù)據(jù)庫位于bin目錄,或者有其他文件被系統(tǒng)改寫,就會導(dǎo)致Session丟失

原因2:

文件夾選項中,如果沒有打開“在單獨的進程中打開文件夾窗口”,一旦新建一個窗口,系統(tǒng)可能認(rèn)為是新的Session會話,而無法訪問原來的Session,所以需要打開該選項,否則會導(dǎo)致Session丟失

原因3:

似乎大部分的Session丟失是客戶端引起的,所以要從客戶端下手,看看cookie有沒有打開

原因4:

Session的時間設(shè)置是不是有問題,會不會因為超時造成丟失

原因5:

IE中的cookie數(shù)量限制(每個域20個cookie)可能導(dǎo)致session丟失

原因6:

使用web garden模式,且使用了InProc mode作為保存session的方式

ASP.NET Session丟失問題解決經(jīng)驗

1. 判斷是不是原因1造成的,可以在每次刷新頁面的時候,跟蹤bin中某個文件的修改時間

2. 做Session讀寫日志,每次讀寫Session都要記錄下來,并且要記錄SessionID、Session值、所在頁面、當(dāng)前函數(shù)、函數(shù)中的第幾次Session操作,這樣找丟失的原因會方便很多

3. 如果允許的話,建議使用state server或sql server保存session,這樣不容易丟失

4. 在global.asa中加入代碼記錄Session的創(chuàng)建時間和結(jié)束時間,超時造成的Session丟失是可以在SessionEnd中記錄下來的。來源:杰之藍

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

關(guān)鍵字:ASP.NET 、策略、客戶端

分享到:

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