這是一個奇怪的一個,但希望有人能在這裏給我一個想法。我在我的應用程序中將Global.asax
的Session_Start
中的幾個值放入了會話中。在Session_Start
之後立即調用我的基礎頁面OnInit
並嘗試使用這些Session
變量之一。.NET會話不工作
怪異的一部分,有時它的工作原理,然後沒有變化的開始給我這個錯誤:
"Session state can only be used when
enableSessionState
is set totrue
, either in a configuration file or in thePage
directive. Please also make sure thatSystem.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
工作,我不明白爲什麼它會在頁面上直接工作,我討厭骯髒的應用程式上了或不再浪費時間妄圖啓用會話。
任何人有任何其他想法?
感謝, 傑夫
你在IIS 6或IIS 7中運行這個嗎? – marcc 2009-06-25 18:46:32
本地IIS6,在測試和生產IIS7上。 – 2009-06-25 18:47:22