IIS部署ASP.NET網站后提示只有在配置文件或 Page 指令中將 enableSessionState 設置為 true 時,才能使用會話狀態...


今天,在IIS上部署網站后,出現了下面錯誤:

只有在配置文件或 Page 指令中將 enableSessionState 設置為 true 時,才能使用會話狀態。還請確保在應用程序配置的 <system.web><httpModules> 節中包括 System.Web.SessionStateMod 或自定義會話狀態模塊。

這段代碼在web用戶空間中,一開始,百思不得其解,因為在Visual Sutio 2008中調試時沒有出現這樣的問題,於是百度后,有的說改Web.config中

<sessionState mode="StateServer" sqlConnectionString="data source=.;Integrated Security=SSPI" timeout="1440" />  

可是改過后,還是沒有效果,又有的說重新建立工程,將文件一一重新復制進去,可以最后還是沒有用。

 

想想以前也用過這個控件,沒有出過錯啊,這個問題困惑了許多,某天,突然想到是不是session的問題,於是,這樣定義了session:

HttpContext context = HttpContext.Current;  

而后,再使用:

if (context.Session["user"] != null)
{
}

后,提示:

這是錯誤變了,是session的問題了,突然想到會不會跟我之前使用URLRewriter.dll頁面偽靜態化有關呢?

百度了一下,改了下web.config竟然有用了。

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
<handlers>

找了下原因:

 

Session為空,程序沒有異常,那么問題就出在做偽靜態的URL重寫。IIS判斷偽靜態頁面請求不滿足Session這個配置節的默認的運行條件:managedHandler,就是說IIS認為這個請求只是請求一個靜態文件。靜態文件使用session是肯定會錯的。

至此,網頁使用正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM