Usuário com melhor resposta
Minha sessao expira muito rapido. Como eu aumento esse tempo ?

Pergunta
-
Eu uso o comando abaixo para salvar dados de uma sesao
CLIENTES.USUARIO = Session["SessionUsuario"].ToString();
Porem depois de um certo tempo essa sessao expira dando erro para o usuario.
Como eu aumento essa sessao para funcionar 8 horas ?
Fico no aguardo
Obrigado
quarta-feira, 2 de dezembro de 2015 17:11
Respostas
-
Olá Ricardo,
Sei como é tentar de tudo o que falam e nada resolver, porém não é tão simples fazer uma boa análise sem a aplicação completa, mesmo assim gostaria de expor mais algumas ideias:
Há outros motivos que podem ocasionar a perda da sessão.
A sessão fica armazenada no servidor, e quem controla é o pool do aplicativo, portando caso o pool seja reciclado, todas as sessões são perdidas. O Pool pode ser reciclado por N motivos, como por exemplo alto uso de memoria, falhas consecutivas e na maioria das vezes ele está configurado para alguns momentos do dia ser reciclado.
Como você precisa garantir 8 horas de um dado temporário, sugiro outros meios, como por exemplo o Identity ou cookies.
Espero ter ajudo, caso precise mais informações e ajuda, estamos a disposição.
@edit: ortografias- Editado Wiliam Buzatto sexta-feira, 4 de dezembro de 2015 21:37
- Marcado como Resposta Marcos SJ segunda-feira, 7 de dezembro de 2015 14:02
sexta-feira, 4 de dezembro de 2015 21:33
Todas as Respostas
-
Veja nessa discussão algumas possíveis soluções: how to increase session timeout in asp.net?.
Joel Rodrigues MSP, MCP, MTA. Editor geral .NET Magazine e Easy .NET Magazine
- Marcado como Resposta Marcos SJ quarta-feira, 2 de dezembro de 2015 19:51
- Não Marcado como Resposta Ricardo-ti2016 quinta-feira, 3 de dezembro de 2015 13:47
quarta-feira, 2 de dezembro de 2015 18:53 -
Eu coloquei dessa forma no meu web.config
<sessionState mode="InProc" timeout="500" />
Será que resolve ?
Quanto tempo representa o 500 ?
Fico no aguardo.
Obrigado
quarta-feira, 2 de dezembro de 2015 19:55 -
Bom dia
Eu coloquei da forma acima no meu web.config
E mesmo assim esta expirando a sessão do usuário depois de certo tempo.
<sessionState mode="InProc" timeout="500" />
Como eu resolvo isso ?
Fico no aguardo
Obrigado
quinta-feira, 3 de dezembro de 2015 13:41 -
- Editado Ricardo-ti2016 quinta-feira, 3 de dezembro de 2015 15:29 estava sem o erro
quinta-feira, 3 de dezembro de 2015 15:26 -
Ja tentei dessa forma e da erro
Erro de Servidor no Aplicativo '/'.
Estado da sessão não está disponível neste contexto.
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.Web.HttpException: Estado da sessão não está disponível neste contexto.
Erro de Origem:Linha 18: AuthConfig.RegisterOpenAuth(); Linha 19: RouteConfig.RegisterRoutes(RouteTable.Routes); Linha 20: Session.Timeout = 2880; Linha 21: } Linha 22:
Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Global.asax.cs Linha: 20
Rastreamento de Pilha:[HttpException (0x80004005): Estado da sessão não está disponível neste contexto.] System.Web.HttpApplication.get_Session() +3521927 ControledeUsuarios.Global.Application_Start(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Global.asax.cs:20 [HttpException (0x80004005): Estado da sessão não está disponível neste contexto.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9941577 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 [HttpException (0x80004005): Estado da sessão não está disponível neste contexto.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9923088 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +90 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +261
Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.114.0quinta-feira, 3 de dezembro de 2015 15:52 -
Boa tarde.
Ricardo, tente o seguinte no teu global.asax:
HttpContext.Current.Session.Timeout = 2880;
Att., Rafael Simor
quinta-feira, 3 de dezembro de 2015 16:01 -
Erro de Servidor no Aplicativo '/'.
Referência de objeto não definida para uma instância de um objeto.
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Erro de Origem:Linha 18: AuthConfig.RegisterOpenAuth(); Linha 19: RouteConfig.RegisterRoutes(RouteTable.Routes); Linha 20: HttpContext.Current.Session.Timeout = 2880; Linha 21: Linha 22: }
Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Global.asax.cs Linha: 20
Rastreamento de Pilha:[NullReferenceException: Referência de objeto não definida para uma instância de um objeto.] ControledeUsuarios.Global.Application_Start(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Global.asax.cs:20 [HttpException (0x80004005): Referência de objeto não definida para uma instância de um objeto.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9941577 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 [HttpException (0x80004005): Referência de objeto não definida para uma instância de um objeto.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9923088 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +90 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +261
Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.114.0quinta-feira, 3 de dezembro de 2015 16:14 -
Em qual evento do global.asax tu estás colocando o timeout?
Tu precisas colocar no evento Session_Start, pois é lá que a Sessão poderá ser alterada.
E qual a forma de login? FormsAuthentication?
Att., Rafael Simor
- Editado SimorC quinta-feira, 3 de dezembro de 2015 16:27
quinta-feira, 3 de dezembro de 2015 16:19 -
void Application_Start(object sender, EventArgs e)
<authentication mode="Forms">
{
// Code that runs on application startup
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterOpenAuth();
RouteConfig.RegisterRoutes(RouteTable.Routes);
HttpContext.Current.Session.Timeout = 2880;
}
<forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" />
</authentication>sexta-feira, 4 de dezembro de 2015 12:48 -
Ricardo, veja:
void Application_Start(object sender, EventArgs e)
Como eu havia falado, tu precisas colocar no "Session_Start", senão não vai funcionar.Att., Rafael Simor
sexta-feira, 4 de dezembro de 2015 12:49 -
Coloquei dessa forma como você mostrou acima
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterOpenAuth();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
void Session_Start(object sender, EventArgs e)
{
HttpContext.Current.Session.Timeout = 2880;
}Porem não funcionou. Durou apenas 18 minutos. Como eu resolvo isso. Por favor. Obrigado
sexta-feira, 4 de dezembro de 2015 13:42 -
Coloque só:
void Session_Start(object sender, EventArgs e) { Session.Timeout = 60; }
Se não me engano o valor é em minutos.
Edit: E tire as configurações do web.config sobre isso, senão é capaz de dar conflito e/ou o IIS sobrescrever essas configurações.
Att., Rafael Simor
sexta-feira, 4 de dezembro de 2015 13:46 -
Bom dia,
Pelo web.config, basta colocar o tempo em minutos. Coloca dentro do system.web:
<configuration>
<system.web> <sessionState timeout="60"></sessionState> </system.web> </configuration>
Atensiosamente,
- Sugerido como Resposta Marcos SJ sexta-feira, 4 de dezembro de 2015 17:18
sexta-feira, 4 de dezembro de 2015 15:59 -
JA COLOQUEI NO WEB.CONFIG
<sessionState mode="InProc" timeout="2880" />
TAMBEM NO GLOBAL.ASAX
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 240;
}POREM DEPOIS DE 10 MINUTOS A SESSAO EXPIRA
NÃO SEI MAIS O QUE FAZER
ME AJUDA
OBRIGADO
sexta-feira, 4 de dezembro de 2015 18:37 -
Olá Ricardo,
Sei como é tentar de tudo o que falam e nada resolver, porém não é tão simples fazer uma boa análise sem a aplicação completa, mesmo assim gostaria de expor mais algumas ideias:
Há outros motivos que podem ocasionar a perda da sessão.
A sessão fica armazenada no servidor, e quem controla é o pool do aplicativo, portando caso o pool seja reciclado, todas as sessões são perdidas. O Pool pode ser reciclado por N motivos, como por exemplo alto uso de memoria, falhas consecutivas e na maioria das vezes ele está configurado para alguns momentos do dia ser reciclado.
Como você precisa garantir 8 horas de um dado temporário, sugiro outros meios, como por exemplo o Identity ou cookies.
Espero ter ajudo, caso precise mais informações e ajuda, estamos a disposição.
@edit: ortografias- Editado Wiliam Buzatto sexta-feira, 4 de dezembro de 2015 21:37
- Marcado como Resposta Marcos SJ segunda-feira, 7 de dezembro de 2015 14:02
sexta-feira, 4 de dezembro de 2015 21:33 -
Bom dia,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
AtenciosamenteMarcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
segunda-feira, 7 de dezembro de 2015 14:02