在Windows2003的服務(wù)器中的IIS6加入了應(yīng)用程序池來回收一些無用的進(jìn)程的功能,當(dāng)由于網(wǎng)站程序的錯(cuò)誤或訪問量太多的導(dǎo)致的應(yīng)用程序池會(huì)自動(dòng)回收該進(jìn)程,防止網(wǎng)站進(jìn)入“死機(jī)”狀態(tài),而這時(shí)候的應(yīng)用程序池的回收就會(huì)導(dǎo)致session變量被清除,就出現(xiàn)了session變量不見的現(xiàn)象。
為了解決這種在Windows2003下才出現(xiàn)的問題,我們?cè)诜?wù)端起動(dòng)ASP.NET State Service服務(wù),并且在系統(tǒng)的machine.config做了一些改動(dòng)?,F(xiàn)在默認(rèn)的情況下會(huì)話狀態(tài)mode是StateServer。如果您的網(wǎng)站根目錄下也配有一個(gè)web.config配置文件,請(qǐng)把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"
/>