Pregunta

Digamos que tiene una página aspx que no se basa en la sesión, pero sí en viewstate para la persistencia entre las devoluciones.

Si un usuario está accediendo a esta página y sale para un almuerzo largo, ¿el estado de la vista seguirá siendo válido cuando regrese?

¿Fue útil?

Solución

No se mantiene ViewState como parte del proceso PostBack. Sin embargo, puede anular la clase de página SavePageStateToPersistenceMedium () y LoadPageStateFromPersistenceMedium (), para implementar ese comportamiento si lo desea. Para obtener más información, lea Comprensión de ASP.NET ViewState .

Tenga en cuenta que Página ViewState se almacena en la sesión, por lo que si su sesión caduca, se perderá. No diría que esto está caducando ViewState, pero sí, se destruirá después del tiempo de espera de la sesión.

Otros consejos

Viewstate en sí no caduca. Dado que se vuelve a publicar en un formulario, se puede reconstituir en cualquier momento.

Según MSDN : ". .. es posible que el estado de la vista caduque si una página no se vuelve a publicar dentro del tiempo de caducidad de la sesión " ;. Entonces, en una ronda sobre el tipo de forma, puede caducar si su sesión lo hace, pero viewstate no caduca directamente. Como no está utilizando el estado de sesión de todos modos, no tiene que preocuparse por la caducidad implícita.

Tenga en cuenta que no habría dicho que expiró. Esa fue MS a quien cité en su propio artículo titulado Control de ViewState

Viewstate no caduca.

Todos los datos del estado de vista se almacenan en el cliente y se envían de vuelta al servidor cuando el usuario ejecuta una devolución de datos.

Esto tiene algunas implicaciones muy interesantes y se explica muy a fondo aquí .

Además, como problema, de forma predeterminada, ASP.NET cifra ViewState con una clave autogenerada. Esto se puede anular con el elemento MachineKey en el archivo web.congif. Aunque ViewState no caducará, puede volverse inválido si se usa una clave autogenerada diferente para descifrar ViewState, como después de un reinicio de IIS, volver a implementar una aplicación o golpear un servidor diferente en una granja de servidores web. Si planea almacenar viewstate durante largos períodos de tiempo, tenga cuidado con la forma en que se encripta / desencripta.

http://msdn.microsoft.com/en-us/library/ ms998288.aspx

Sí, ViewState caduca en ciertas condiciones. Por ejemplo, cuando usa iframe: s, o cuando mantiene " live " conexión al servidor con postbacks regulares. Entonces es posible que desee investigar esta opción: <sessionPageState historySize="9"/>, que realmente codifica cuántos & Quot; resultados de devolución & Quot; se almacenan en la sesión (si se utiliza SessionPageStatePerster). Cada devolución de datos almacena su ViewState al final de la cola en la sesión [& Quot; __ VIEWSTATEQUEUE & Quot;], y elimina ViewStates que son & Quot; demasiado viejos & Quot ;. ¿Y cómo crees que SessionPageStatePerster decide qué ViewStates son demasiado antiguos ... configurando un historial arbitrario de tamaño constante en web.config ... Omg! También a mí para siempre encontrar este problema ... Mi odio hacia la programación asp.net es indescriptible ahora ... grrr ...

Viewstate no caduca, siempre que estén en la página, seguirá estando allí y será funcional.

El ViewState persistirá de POST a POST. En realidad, se almacena dentro de un campo oculto en su formulario para que sea POSTADO en su servidor todo el tiempo.

Mientras no confíes en la sesión, no deberías tener problemas para reconstruir el estado de la página. Sin embargo, es fácil probar el código de estado de su página si lo desea: simplemente configure su sesión para que caduque después de 60 segundos en su web.config, luego cargue su página, espere un poco más de un minuto (navegue hasta Stack Overflow y responda algunas preguntas) y luego haz clic en un botón de tu página.

Lamento revivir este viejo hilo, pero ahora hay nueva información disponible:

Sí, ViewStates caduca . Vengo de 19 horas investigando sobre un problema de ViewStates que pierde sus valores entre las devoluciones de intervalo de tiempo largo. Me tomó un tiempo leer los documentos de MSDN y las respuestas de Stackoverflow diciendo que era básicamente imposible que suceda a menos que se empleara una implementación de almacenamiento ViewState personalizada, que, ahora sé, no es cierto.

Mi problema estaba teniendo lugar en un entorno de SharePoint 2013. El servicio conocido como Caché distribuida (también conocido como AppFabric ) almacena en caché el ViewState y tiene un Tiempo de vida asociado. Puedes encontrar más información aquí: http: // blogs .msdn.com / b / besidethepoint / archive / 2013/03/27 / appfabric-caching-and-sharepoint-1.aspx

La información interesante se puede encontrar en esta frase: " Para mejorar el rendimiento de la página, comenzando en SharePoint 2013, SharePoint almacena en caché el lado del servidor de datos ViewState en lugar de transferirlo de un lado a otro a los clientes. "

Espero que esta información ayude a alguien tan desesperado como yo hace 19 horas.

ViewState se mantiene en un campo oculto en la página misma. Entonces, mientras el usuario tenga la página, tendrá el ViewState. Pero si su aplicación cierra automáticamente la sesión del usuario después de un cierto período de tiempo, seguir teniendo el ViewState puede no serle útil.

Por defecto, Viewstate se incluye con el contenido html como una entrada oculta. Eso significa que no caducará, pero que todo en viewstate debe cargarse desde el navegador del usuario. Dado que normalmente es la parte más lenta de la conexión en un sitio público, poner muchas cosas en viewstate puede hacer que su sitio parezca muy lento.

La respuesta corta es: no.

La respuesta más larga es: depende de la implementación del almacenamiento ViewState. Puede proporcionar una implementación personalizada de ViewState que podría caducar después de un período de tiempo determinado. Por ejemplo, podría almacenar ViewState en la base de datos o en el disco y enviar solo alguna referencia al valor almacenado en un campo oculto. Luego, puede utilizar el procesamiento por lotes para eliminar los datos obsoletos de ViewState o realizar la caducidad a pedido.

No Viewstate no caduca. Después de redirigir a otra página, el valor del estado de vista se pierde o caduca. para más detalles http: //www.c-sharpcorner .com / UploadFile / 78d182 / Asp-Net-state-management-techniques /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top