Sesja .NET nie działa

To dziwne, ale miejmy nadzieję, że ktoś może mi tutaj dać pomysł. Wprowadzam kilka wartości do sesji wSession_Start zGlobal.asax w mojej aplikacji. Natychmiast poSession_Start moja strona podstawowaOnInit zostaje wywołany i próbuje użyć jednego z nichSession zmienne.

Dziwna część to czasami działa, a następnie po NIE wprowadzeniu zmian zacznie podawać mi ten błąd:

„Stan sesji może być używany tylko, gdyenableSessionState jest ustawione natrue, albo w pliku konfiguracyjnym, albo w plikuPage dyrektywa. Upewnij się również, żeSystem.Web.SessionStateModule lub niestandardowy moduł stanu sesji jest zawarty w<configuration>\<system.web>\<httpModules> sekcja w konfiguracji aplikacji. ”

Szukałem i patrzyłem na znalezienie różnych sposobów włączania sesji wweb.config. Oto jak teraz wygląda:

<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>

Widzisz, że niektóre rzeczy zostały skomentowane, a konkretnieenableSessionState="true" i<add name="Session" type="System.Web.SessionState.SessionStateModule"/> ponieważ nigdy ich tam nie było i zawsze działało. Ale wypróbowałem go, gdy oba są włączone, jeden lub drugi włączony, to po prostu nie ma znaczenia.

Jest to aplikacja, która jest w produkcji od lat, wprowadzam tylko drobne zmiany, prawdopodobnie największą z nich jest dodanie do niej strony „tytułowej” i uaktualnienie z wersji 2.0 do 3.5. Nie próbowałem dodawaćenableSessionState do dyrektyw strony, ponieważ nie działa wweb.config Nie rozumiem, dlaczego miałoby to działać bezpośrednio na stronie i nie chciałbym już więcej brudzić aplikacji ani tracić czasu na próżno próbując włączyć sesję.

Czy ktoś ma jakieś inne pomysły?

Dzięki, Jeff

questionAnswers(2)

yourAnswerToTheQuestion