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