2009-06-25 98 views
1

這是一個奇怪的一個,但希望有人能在這裏給我一個想法。我在我的應用程序中將Global.asaxSession_Start中的幾個值放入了會話中。在Session_Start之後立即調用我的基礎頁面OnInit並嘗試使用這些Session變量之一。.NET會話不工作

怪異的一部分,有時它的工作原理,然後沒有變化的開始給我這個錯誤:

"Session state can only be used when enableSessionState is set to true , either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration."

我看着看着就發現在web.config使會議的所有不同的方式。下面是它看起來像現在:

<system.web> 
... 
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/> 

    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/> 
    <httpHandlers> 
     <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpHandlers> 
    <xhtmlConformance mode="Legacy"/> 
    <pages> 
    <!-- enableSessionState="true" autoEventWireup="true" enableViewState="true" enableViewStateMac="true" --> 
     <controls> 
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </controls> 
    </pages> 
    <httpModules> 
     <!--<add name="Session" type="System.Web.SessionState.SessionStateModule"/>--> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 
</system.web> 

你可以看到我有一些東西註釋掉,特別是enableSessionState="true"<add name="Session" type="System.Web.SessionState.SessionStateModule"/>,因爲他們從來沒有出現之前,它總是用來工作。但我已經嘗試過,它們都啓用了,其中一個或另一個啓用了,它只是沒有什麼區別。

這是一個應用程序,一直在生產好幾年了,我只是做輕微的變化,可能其中最大的是增加一個「標題欄」頁面,它和升級,從2.0到3.5。我還沒有嘗試過加入enableSessionState頁面指令,因爲它沒有在web.config工作,我不明白爲什麼它會在頁面上直接工作,我討厭骯髒的應用程式上了或不再浪費時間妄圖啓用會話。

任何人有任何其他想法?

感謝, 傑夫

+0

你在IIS 6或IIS 7中運行這個嗎? – marcc 2009-06-25 18:46:32

+0

本地IIS6,在測試和生產IIS7上。 – 2009-06-25 18:47:22

回答

6

BREAKPOINTS!

我有斷點在基本頁面的構造方法設置,並在主網頁,還有在session_start和的OnInit。同事刪除了調試器中的所有斷點,並且問題消失了!

唉!

0

我遇到斷點同樣的事情在一個變量實例和頁面加載設置一些會話值。運行Windows 7/VS2010。當我禁用斷點時,它就可以加載會話狀態。