Это странно, но, надеюсь, кто-то может дать мне идею здесь. Я помещаю несколько значений в сессию в Session_Start
из Global.asax
в моем приложении. Сразу после вызова Session_Start
моей базовой страницы OnInit
вызывается и пытается использовать одну из этих Session
переменных.
Странная часть, иногда это работает, и тогда, после НИКАКИХ изменений, начнет выдавать эту ошибку:
"Состояние сеанса может использоваться только тогда, когда
enableSessionState
установлен на true
,
либо в файле конфигурации, либо в
директива Page
. Пожалуйста, также сделайте
уверен, что
System.Web.SessionStateModule
или
Пользовательский модуль состояния сеанса
включены в
<configuration>\<system.web>\<httpModules>
раздел в приложении
конфигурации. "
Я искал и искал разные способы включения сеанса в 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"/>
, потому что они никогда не были там раньше, и это всегда работало. Но я попробовал это сделать, когда они оба включены, один или другой включен, это не имеет значения.
Это приложение, которое находится в разработке уже много лет, я делаю только небольшие изменения, возможно, самое большое из которых - это добавление к нему страницы "titlebar" и обновление с 2.0 до 3.5. Я не пытался добавить enableSessionState
к директивам страницы, потому что он не работал в web.config
. Я не понимаю, почему это сработало бы прямо на странице, и я бы не хотел больше портить приложение или потратить впустую больше времени, тщетно пытаясь включить сеанс.
У кого-нибудь есть еще идеи?
Спасибо,
Джефф