NET Session não funciona
-
20-08-2019 - |
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 paratrue
, em um arquivo de configuração ou em a directivaPage
. Por favor, também fazer claro queSystem.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
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.