Вопрос

Это странно, но, надеюсь, кто-нибудь сможет подсказать мне идею здесь.Я помещаю несколько значений в сеанс в 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 Я не понимаю, почему это будет работать непосредственно на странице, и мне бы не хотелось больше пачкать приложение или тратить время на тщетные попытки включить сеанс.

У кого-нибудь есть еще какие-нибудь идеи?

Спасибо, Джефф

Это было полезно?

Решение

КОНТРОЛЬНЫЕ ТОЧКИ!

У меня были установлены точки останова в методах конструктора базовой страницы и главной страницы, а также Session_Start и OnInit.Коллега удалил все точки останова в отладчике, и проблема исчезла!

Тьфу!

Другие советы

Я испытываю то же самое с точкой останова при создании экземпляра переменной и загрузке страницы, устанавливающей некоторые значения сеанса.Работает под управлением Windows 7 / VS2010.Когда я отключаю точку останова, она затем может загрузить состояние сеанса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top