Help and Support

Id. de artículo: 316148 - Última revisión: viernes, 16 de junio de 2006 - Versión: 4.2

PRB: Se pierden intermitentemente las variables de sesión en las aplicaciones ASP.NET

En esta página

Expandir todo | Contraer todo

Síntomas

Las variables de sesión pueden perderse a veces en las aplicaciones Microsoft ASP.NET.

Cuando este problema se produce en un clúster de Microsoft Application Center 2000, las sesiones se descartarán en el controlador cuando el software antivirus examine los archivos Web.config o Global.asax. El examen desencadenará una replicación, lo que ocasionará que las sesiones se pierdan en cada servidor miembro por turnos cuando el archivo se reemplace.

Causa

Este problema puede tener varias causas. En este artículo se trata una posible causa: los datos de la sesión se pierden debido a la actividad del software antivirus.

Este problema puede ocurrir cuando el software antivirus examina los archivos de las aplicaciones Web. Durante el examen, el software antivirus puede marcar como modificados los archivos Global.asax, Web.config y Machine.config. Esta modificación hace que se pida a Microsoft .NET Framework que se reinicie la aplicación Web. Si los datos de la sesión se almacenan en proceso, se perderán todos siempre que se reinicie una aplicación Web.

Solución

Para resolver este problema, utilice uno de los métodos siguientes:
  • Configure el software antivirus para que no examine los archivos .asax y .config.
  • Póngase en contacto con el fabricante del software antivirus para obtener instrucciones.
  • Configure la aplicación Web para almacenar los datos de la sesión fuera de proceso. Para obtener más información al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    307598  (http://support.microsoft.com/kb/307598/ ) Introducción a la administración de estados de ASP.NET

Estado

Este comportamiento es una característica del diseño de la aplicación.

Más información

Pasos para reproducir este comportamiento

Nota
En este ejemplo se supone que la aplicación Web almacena los datos de la sesión en proceso (que es el comportamiento predeterminado).
  1. Siga estos pasos para crear una aplicación Web en Microsoft Visual Basic .NET:
    1. Abra Microsoft Visual Studio .NET.
    2. En el menú Archivo, seleccione Nuevo y haga clic en Proyecto.
    3. En el cuadro de diálogo Nuevo proyecto, haga clic en la opción Proyectos de Visual Basic de Tipos de proyecto y, después, haga clic en la opción Aplicación Web ASP.NET de Plantillas.
    4. En el cuadro de texto Ubicación, escriba http://localhost/TestWeb1.
    5. Haga clic en Aceptar para crear el proyecto. WebForm1.aspx se agrega al proyecto de forma predeterminada.
  2. En la ventana Explorador de soluciones, haga clic con el botón secundario del mouse en WebForm1.aspx y, a continuación, haga clic en Ver código.
  3. Agregue el siguiente código al procedimiento del evento Page_Load:
    Response.Write("<b>Prueba de variables de sesión</b><br> <br>") If IsNothing(Session("TestVal")) Then Response.Write("Valor anterior de TestVal: <b>nothing</b>") Session("TestVal") = 0 Else Response.Write("Valor anterior de TestVal: " & Session("TestVal")) End If Session("TestVal") += 1 Response.Write("<br>TestVal new value: " & Session("TestVal"))
    					
  4. En el menú Generar, haga clic en Generar solución.
  5. En la ventana Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en WebForm1.aspx y, después, haga clic en Ver en el explorador.
  6. En el explorador, haga clic en Actualizar. Observe que la página muestra el valor inicial de la variable de sesión como nothing.
  7. Vuelva a hacer clic en Actualizar varias veces. Observe que el valor inicial de la variable de sesión cambia a un número que se incrementa siempre que actualiza la página.
  8. Deje abierta la página en el explorador.
  9. En el Bloc de notas, abra el archivo Global.asax desde la carpeta del proyecto. El archivo Global.asax de este proyecto TestWeb1 suele encontrarse en la carpeta C:\Inetpub\wwwroot\TestWeb1\Global.asax.
  10. Mueva el punto de inserción a una línea en blanco del archivo Global.asax y presione ENTRAR para agregar una segunda línea en blanco. Debe realizar este paso para marcar el archivo como modificado:
  11. Guarde los cambios y cierre el archivo Global.asax.
  12. En el explorador, haga clic en Actualizar de nuevo. Observe que la variable de sesión TestVal muestra el valor inicial nothing. Se pierden las variables de sesión en proceso.

Referencias

Para obtener más información al respecto, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
303881  (http://support.microsoft.com/kb/303881/ ) PRB: Se pierden las variables de sesión en las aplicaciones Web ASP
317604  (http://support.microsoft.com/kb/317604/ ) Cómo configurar SQL Server para almacenar el estado de la sesión de ASP.NET
871042  (http://support.microsoft.com/kb/871042/ ) ¿Por qué se reinicia mi aplicación ASP:NET?

La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palabras clave: 
kbcaching kbconfig kbprb kbstate kbsysadmin KB316148

Seleccione idioma