在Windows2003的服務(wù)器中的IIS6加入了應(yīng)用程序池來回收一些無用的進(jìn)程的功能,當(dāng)由于網(wǎng)站程序的錯誤或訪問量太多的導(dǎo)致的應(yīng)用程序池會自動回收該進(jìn)程,防止網(wǎng)站進(jìn)入“死機”狀態(tài),而這時候的應(yīng)用程序池的回收就會導(dǎo)致session變量被清除,就出現(xiàn)了session變量不見的現(xiàn)象。
為了解決這種在Windows2003下才出現(xiàn)的問題,我們在服務(wù)端起動ASP.NET State Service服務(wù),并且在系統(tǒng)的machine.config做了一些改動,F(xiàn)在默認(rèn)的情況下會話狀態(tài)mode是StateServer。如果您的網(wǎng)站根目錄下也配有一個web.config配置文件,請把mode="InProc"改成mode="StateServer",如下代碼,就可以防止session變量的丟失:
即:
<sessionState mode="InProc" cookieless="false" timeout="60"/>改為
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>