Pergunta

Esta é uma estranha, mas espero que alguém pode me dar uma idéia aqui. Estou colocando alguns valores em sessão no Session_Start do Global.asax em meu aplicativo. Imediatamente após a Session_Start OnInit da minha página de base é chamado e tenta usar uma dessas variáveis ??Session.

A parte estranha é às vezes funciona, e depois de nenhuma mudança vai começar a dar-me este erro:

"Estado da sessão só pode ser usado quando enableSessionState está definido para true, em um arquivo de configuração ou em a directiva Page. Por favor, também fazer claro que System.Web.SessionStateModule ou um módulo de estado de sessão personalizado é incluído em <configuration>\<system.web>\<httpModules> seção na aplicação configuração. "

Eu olhei e parecia encontrar todas as maneiras diferentes sobre como ativar sessão no web.config. Aqui está o que parece agora:

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

Você pode ver que eu tenho algumas coisas comentada, especificamente o enableSessionState="true" e <add name="Session" type="System.Web.SessionState.SessionStateModule"/> porque eles nunca foram lá antes e sempre usado para o trabalho. Mas eu já tentei com ambos habilitado, um ou outro habilitado, ele simplesmente não faz diferença.

Este é um aplicativo que está em produção há anos, eu só estou fazendo pequenas alterações, provavelmente, o maior dos quais é adicionando uma página de "barra de título" para ele, e a atualização de 2,0 para 3,5. Eu não tentei adicionar o enableSessionState às diretivas de página porque não fez trabalho no web.config Eu não vejo por que ele iria trabalhar diretamente na página, e eu odiaria suja o aplicativo até mais ou perca mais tempo tentando em vão permitir sessão.

Alguém tem outras ideias?

Obrigado, Jeff

Foi útil?

Solução

BREAKPOINTS!

Eu tinha pontos de interrupção definidos nos métodos construtores da página de base, e na página principal, bem como o Session_Start eo OnInit. Um colega de trabalho eliminados todos os pontos de interrupção no depurador eo problema desapareceu!

Ugh!

Outras dicas

I experimentar a mesma coisa com um ponto de interrupção em uma configuração de alguns valores de sessão carga instanciação variável e página. Executando o Windows 7 / VS2010. Quando eu desativar o ponto de interrupção é então capaz de carregar o estado da sessão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top