Pregunta

Esto es extraño, pero espero que alguien pueda darme una idea aquí.Estoy poniendo en práctica algunos valores en el Session_Start del Global.asax en mi aplicación.Inmediatamente después del Session_Start mi pagina base OnInit recibe una llamada e intenta usar uno de esos Session variables.

Lo extraño es que a veces funciona, y luego, después de NO haber cambios, comenzará a darme este error:

"El estado de sesión sólo se puede utilizar cuando enableSessionState se establece en true, ya sea en un archivo de configuración o en el Page directiva.Asegúrese también de que System.Web.SessionStateModule o se incluye un módulo de estado de sesión personalizado en el <configuration>\<system.web>\<httpModules>Sección en la configuración de la aplicación ".

He buscado y buscado diferentes formas de habilitar la sesión en el web.config.Así es como se ve ahora:

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

Puedes ver que tengo algunas cosas comentadas, específicamente el enableSessionState="true" y <add name="Session" type="System.Web.SessionState.SessionStateModule"/> porque nunca antes estuvieron allí y siempre solía funcionar.Pero lo probé con ambos habilitados, uno u otro habilitado, simplemente no hace ninguna diferencia.

Esta es una aplicación que ha estado en producción durante años, solo estoy haciendo cambios menores, probablemente el mayor de los cuales es agregarle una página de "barra de título" y actualizar de 2.0 a 3.5.No he intentado agregar el enableSessionState a las directivas de la página porque no funcionó en el web.config No veo por qué funcionaría directamente en la página, y odiaría ensuciar más la aplicación o perder más tiempo intentando en vano habilitar la sesión.

¿Alguien tiene alguna otra idea?

Gracias Jeff

¿Fue útil?

Solución

¡PUNTOS DE DESCANSO!

Tenía puntos de interrupción establecidos en los métodos de construcción de la página base y la página principal, así como Session_Start y OnInit. ¡Un compañero de trabajo eliminó todos los puntos de interrupción en el depurador y el problema desapareció!

¡Ugh!

Otros consejos

Experimento lo mismo con un punto de interrupción en una instanciación variable y carga de página configurando algunos valores de sesión. Ejecutando Windows 7 / VS2010. Cuando desactivo el punto de interrupción, puede cargar el estado de la sesión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top