Tengo una pagina en la cual guardo 2 string y un datatable en variables de
Sesion, desde esta pagina llamo a otra con:
Response.Redirect("Confirmacion.aspx?CustID=" + cCustID.Text)
En el Page_load checo los valores y no hay ningun proble ahi estan, dejo
seguir corriendo el codigo y al precionar un ImageButton que tengo en esta
seguna pagina trato de recuperar los valores de sesion y ya no tengo
ninguno.
Alguien podria decirme que puede estar pasando por que los pierdo ??????
que tengo que hacer para mantenerlos, no puede ser el timeout por que lo
tenfo a k20 minutos y entre una pagina y otra no pasa mas de 1 minuto
El timeout no es... ya que como dices no se cumple los 20min de
inactividad.
Bueno te envio unos enlaces para que mires, por ejemplo:
- ¿Por qué se reinicia mi aplicación ASP.NET?
http://support.microsoft.com/?scid=kb;es;871042
- Las variables de sesión (modo inProc) se pierden
intermitentemente.
- Se pierden las variables de estado de aplicación.
- Se pierden los datos de caché.
- Parece que el evento Application Start y el evento Application
End se inician inesperadamente
Con lo que respecta al primer punto, cuando las vbles de session se
almacenan en modo INPROC (que es la configuracion por defecto) se
guardan en el mismo proceso que esta corriendo tu applicacion web, y si
falta memoria en el servidor todo lo que esta inProc se puede eliminar
para dejar un poco de "lugar"...
Te recomendaria que coloques tus sessiones pro ejemplo en un servidor
de session o incluso dentro de un sqlserver, para que no tengas
problemas cuando estes modificando archivos.
Pero para empezar podrias guarda en el mismo servidor o sea deberas
configurar esa maquina com oservidor en modo StateServer el
sessionState (tambien esta en los enlaces mas abajo)
--------------------------------
POST ANTERIOR
--------------------------------
Si puede ser que las variables de session las pierdas... porque si
falta memoria en el servidor todo lo que esta inProc se puede eliminar
para dejar un poco de "lugar"... basicamente estan en el mismo PROCESO
y este proceso tiene la particularidad que se RECICLA.
Te recomendaria que coloques tus sesiones por ejemplo en un servidor de
session o incluso dentro de un sqlserver, para que no tenga problemas
cuando estes modificando archivos, o para que no se pierdan las
variables
Para probar coloca en el modo StateServer en el mismo servidor y alli
no se "perderan" de repente sino cuando deben... mas abajo coloco unos
enlaces de este procedimiento
Aqui tambien unas cosillas mas de un post anterior de la misma
tematica.
Bueno la session donde la guardas???
----------------------------------------
ASP.NET admite tres modos de estado de sesión: (vaa 4 con Custom)
- InProc
- StateServer:
- SqlServer:
- Custom
Aqui estan:
- InProc: el modo en proceso almacena valores en la memoria del
proceso de trabajo de ASP.NET. Este modo ofrece el acceso más rápido
a estos valores. Sin embargo, cuando el proceso de trabajo de ASP.NET
se recicla se pierden los datos de estado.
- StateServer: Como alternativa, el modo StateServer utiliza un
servicio independiente de Microsoft Windows para almacenar variables de
sesión. Como este servicio es independiente de Microsoft Internet
Information Server (IIS), puede ejecutarse en un servidor diferente.
Puede utilizar este modo en una solución de equilibrio de carga, ya
que varios servidores Web pueden compartir variables de sesión. Aunque
las variables de sesión no se pierden si reinicia IIS, el rendimiento
se ve afectado cuando atraviesa los límites de proceso.
- SqlServer: si le preocupa la persistencia de la información de
sesión, puede utilizar el modo SqlServer para utilizar Microsoft SQL
Server y asegurar así el máximo nivel de confiabilidad. El modo
SqlServer es similar al modo fuera de proceso, excepto en que los datos
de sesión se mantienen en SQL Server. El modo SqlServer también le
permite utilizar un almacén de estados ubicado fuera del proceso de
IIS y que puede residir en el equipo local o en un servidor remoto.
- Existe un modo Custom, donde debes indicarle donde se guardaran
las sessiones (nunca lo probe por eso no te puedo comentar muy bien)
Donde se configura: en el web.config (como toda configuracion) je!
Y cuando se reinicia?
----------------------
Dice que se reinicia cuando:
- si se recicla el AppDomain,
- o el proceso Aspnet wp.exe (o el proceso W3wp.exe)
Cuando?
- Varios atributos (por ejemplo el atributo memoryLimit) tienen
configuraciones particulares en la sección <processModel> del archivo
de configuración.
(aqui vale la pena aclarar que este cambio no surge efecto directamente
como lo demas atributos del webconfig sino cuando se reinicia el
proceso de trabajo)
Se lo puede cambiar tambien desde interfaz grafico desde el grupo de
aplicacciones desde la consola del IIS. pero creo que esto es para
todas las webs del grupo de app pero no se cual tiene mas prioridad
creo yo que el webconfig como todo.
memoryLimit: Especifica, como porcentaje de la memoria total del
sistema, el espacio de memoria máximo que el proceso de trabajo puede
consumir antes de que ASP.NET inicie un nuevo proceso y reasigne las
solicitudes pendientes. El valor predeterminado es 60.
- Se modificaron el Global.asax o el archivo Web.config.
- Se modificó el directorio Bin de la aplicación Web.
- La detección de virus de software tocó alguna información
adicional en archivos de configuracion .config.
El modo de sesión InProc indica que se almacena estado de la sesión
localmente.
Esto significa que con sesión InProc, se almacena realmente el modo de
estado en objetos de vida en el AppDomain de la aplicación Web. Se
debe esto a cuando se pierde al estado de sesión Aspnet wp.exe (o
W3wp.exe para aplicaciones que se ejecutan en Servicios de Internet
Information Server [IIS 6,0]) o se reinicia el AppDomain.
Todo eso esta en este KB
http://support.microsoft.com/?scid=kb;es;324772
INFO: Introducción a la administración de estados de ASP.NET
http://support.microsoft.com/kb/307598/es
Configuración de la agrupación de aplicaciones de reciclaje
-------------------------------------------------------------------------
Reciclar la configuración del grupo de aplicaciones:
La configuración de la agrupación de aplicaciones de reciclaje
permiten controlar el modo de recuperación de los recursos del sistema
http://msdn2.microsoft.com/es-es/library/1dtw20e3.aspx
Process Model - Propiedades
http://msdn2.microsoft.com/es-es/library/yk0c93w4.aspx
ProcessModelSection (Clase)
La clase ProcessModelSection controla los distintos aspectos del
proceso de trabajo de ASP.NET, incluidos el período de duración, el
número de instancias creadas a la vez, bajo qué identidad de
seguridad se ejecuta y el tamaño del grupo de subprocesos de CLR que
se ocupa de las solicitudes.
http://msdn2.microsoft.com/es-es/library/system.web.configuration.processmodelsection(VS.80).aspx
Enlaces:
-------------------
Modos de estado de sesión
http://msdn2.microsoft.com/es-es/library/ms178586.aspx
Elemento sessionState (Esquema de configuración de ASP.NET)
http://msdn2.microsoft.com/es-es/library/h6bb9cz9.aspx
¿Por qué se reinicia mi aplicación ASP.NET?
http://support.microsoft.com/?scid=kb;es;871042
PRB: Datos de sesión se pierden cuando utiliza modo InProc de ASP.NET
de estado de sesión
http://support.microsoft.com/kb/324772/es
PRB: Las variables de sesión se pierden intermitentemente en
aplicaciones ASP.NET
http://support.microsoft.com/kb/316148/es
CÓMO PARA: Configura SQL Server a Store ASP.NET Session State
http://support.microsoft.com/kb/317604/
otro post
http://groups.google.com.ar/group/microsoft.public.es.dotnet.aspnet/msg/d0e5ed1238f28084
Espero que te sirva de ayuda o guia
_______________________
Jose A.. Fernandez
Ricardo Sotres ha escrito:
"Jose A. Fernandez" <ferna...@gmail.com> escribió en el mensaje
news:1167509116.1...@73g2000cwn.googlegroups.com...
http://msdn2.microsoft.com/es-es/library/ms178586(VS.80).aspx
Configurar el modo de servidor de estado
http://msdn.microsoft.com/library/spa/default.asp?url=/library/spa/cpguide/html/cpconsessionstate.asp
http://es.gotdotnet.com/quickstart/aspplus/doc/stateoverview.aspx
___________________
Jose A. Fernandez
--
Saludos
Marcos Mellibovsky
MCT MCTS MCSD.NET MCDBA MCSE...
Cordoba Argentina
"Ricardo Sotres" <ricar...@hotmail.com> escribió en el mensaje
news:OAoTDE8...@TK2MSFTNGP06.phx.gbl...
Ademas tienes aqui un articulo interesante sobre las posibles razones
de perdida de session
http://aspfaq.com/show.asp?id=2157
Se pierden las cookies cuando se utiliza el método de dirección URL
FILE:// en Window.Open
http://support.microsoft.com/?kbid=315713
Ventanas abiertas por secuencia de comandos pierden autenticación o
sesión
http://support.microsoft.com/default.aspx/kb/240928
http://support.microsoft.com/default.aspx/kb/196383 (desde versiones
anteriores de IE)
http://support.microsoft.com/kb/288993/ ( tambien las nuevas)
Sintesis: No mantiene session en multiples ventanas del browser
Pero a mi nunca me sucedio y a la vez trato de no utilizar ventanas
popup que lean session sino mas bien envio los datos por querystring
______________________
Jose A. Fernandez
Marcos Mellibovsky ha escrito:
"Jose A. Fernandez" <ferna...@gmail.com> escribió en el mensaje
news:1167513098....@n51g2000cwc.googlegroups.com...
Revisando mi programa me doy cuenta que una de las variables de sesion si
trai valor, reviso cual es la diferencia entre las que pierden valor y la
que no y la unica diferencia es que la que si conserva el valor le acigno el
valor una linea antes del
Response.Redirect("Confirmacion.aspx?CustID=" + cCustID.Text)
y no la uso ni le asigno valor en ningun otro lado de mi pagina 1, las demas
como las uso para cuestiones del postback le asino y leo el valor en varios
lugares de la pagina1.
Al darme cuenta de esto hago lo sigiente:
las que uso en varios lugares son:
Session("dtPedidoDetalle") = dtPedidoDetalle
Session("CustID") = cCustID.Text
entonses creo un segundo juego y le asino el valor:
Session("dtPedidoDetalle1") = dtPedidoDetalle
Session("CustID1") = cCustID.Text
y resulta que este segundo juego de variables si me conserva el valor.
lo que me desconsierta es que aunque les asigne el valor a las que uso en
varios lados una linea antes de llamar a la pagina2 se pierde el valor,
solamente lo conserva si uso un segundo grupo de variables con diferente
nombre
POR que podria estar pasandome esto.