2009-02-24 19 views
15

Detalles de error se dan a continuación. Este error ocurre ocasionalmente/rara vez/a veces y no hay pasos para reproducirlo.Error al cargar viewstate. Sucediendo solo ocasionalmente Resistente a recrear

¿Cómo puedo saber qué control está arrojando este error de Viewstate?

Mensaje de error: Error al cargar viewstate. El árbol de control en el que viewstate se está cargando debe coincidir con el árbol de control que se utilizó para guardar viewstate durante la solicitud anterior. Por ejemplo, al agregar controles dinámicamente, los controles agregados durante una devolución posterior deben coincidir con el tipo y la posición de los controles agregados durante la solicitud inicial.

Cuándo: En raras ocasiones /Ocasionalmente

Pasos para Recrear: No se puede

Seguimiento de la pila:

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException: Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request. 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) 
    at System.Web.UI.Control.LoadViewStateRecursive(Object savedState) 
    at System.Web.UI.Page.LoadAllState() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    --- End of inner exception stack trace --- 
    at System.Web.UI.Page.HandleError(Exception e) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest() 
    at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
    at System.Web.UI.Page.ProcessRequest(HttpContext context) 
    at ASP.sessions_aspx.ProcessRequest(HttpContext context) in c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\73694782\85423fe4\App_Web_mnrmfsfa.8.cs:line 0 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+0

¿Usted está funcionando esto en una granja de servidores web? ¿Dónde está instalada la aplicación web en más de un servidor web? He oído que la clave del equipo debe ser la misma dentro de la metabase de IIS si es así. – jwalkerjr

+0

Muy cierto, sin embargo, el error se presentaría como "Fallo al descifrar ViewState" ... algo así ... –

+0

Este error es muy difícil de reproducir ... ya que no está sucediendo en mi computadora local pero ocurre en el servidor (Windows Server 2003) –

Respuesta

4

que he experimentado este error, que ocurre cuando hay una cruz página de devolución de datos.

Por ejemplo: Carga Vista A. Vista A carga bien, por cualquier razón las condiciones bajo las que se cargó la Vista A, ya no existen. La página alternativa es la Vista B. Entonces, el usuario completa el formulario en la Vista A y la publicación posterior. Como las condiciones de Vista A ya no se cumplen, los valores de formulario de Vista A se publican en la Vista B.

12

Más generalmente, este error ocurre cuando la jerarquía de control de la página cambia de forma que impide que el marco cargue el estado de vista . El mecanismo de estado de vista asume que la jerarquía de control es la misma en la carga que cuando se guardó.

podría parece un error aleatorio porque hay casos en que al cambiar los controles en la página no impide que se cargue el estado de la vista. Eche un vistazo a su página y busque los controles que se crean/eliminan dinámicamente. Asegúrese de que los controles se hayan agregado a la página antes de el estado de la vista está cargado (eso sería antes de la página Cargar evento).

Desafortunadamente no hay forma de ver cuál es exactamente el control culpable que no se ha agregado correctamente a la jerarquía de control. Una forma común de ver este error es agregar algunos controles dinámicos en un evento (por ejemplo, en un índice desplegable seleccionado cambiado) - de esta manera su estado se guarda para ver el estado - pero no agregarlos nuevamente en la devolución de datos - de esta manera la vista el estado no es válido porque los controles ya no existen cuando se carga el estado de la vista.

+0

Esto es muy común con los controles vinculados a datos cuando los datos subyacentes han cambiado. –

24

Unfortunately there is no way to see which exactly is the guilty control that is not added correctly to the control hierarchy.

¡Hay!

Deshabilitar "Solo mi código" en la configuración de depuración. Y capture todas las excepciones arrojadas (marque 'throwwn' para Common Language Runtime en el diálogo abierto mediante Ctrl-Alt-E).

Después de que se produzca la excepción, vaya al marco de pila más cercano donde esté disponible el objeto Control y examine su ClientID y sus padres.

+4

Podría ayudar a alguien: Cómo deshabilitar "solo mi código" en Visual Studio 2005 http://www.johnlamansky.com/blog/how-to-disable-just-my-code-in-visual-studio- 2005/ –

+0

¿Por qué nunca fui capaz de encontrar cómo hacer esto? ¡Muchas gracias por esto! – TweeZz

+1

[Y esto] (http://msdn.microsoft.com/en-us/library/dd264988.aspx) es para vs 2013: –

0

He visto este error cuando uso una vista de cuadrícula. Sucedería cuando la interacción del usuario causara una devolución de datos antes de que la página terminara de renderizarse por completo.

Creo que se corrigió en VS2005 SP1 sin embargo.

0

es probable que pueda reproducirlo a través detener la página antes de que esté completamente cargado, y luego presentar una devolución de datos. Si el servidor no pudo obtener el viewstate completo del servidor, entonces no podrá volver a crearlo en la devolución de datos, de ahí el bloqueo.

5

hay una solución para este error:

Conjunto EnableViewState propiedad de todos los controles de carga de forma dinámica a falso. Esta no es una solución completa; estamos deshabilitando controles 'ViewState aquí para eludir este error.

Esta solución puede causar otros errores que levanten sus cabezas, así que tenga cuidado al aplicar esta solución.

+0

Esto puede parecer kludgy, pero es útil en situaciones donde usted sabe que el ViewState doesn ' aplicar, como cuando está redirigiendo el navegador a una nueva página en un PostBack. –

2

Tuve este error cuando mis controles personalizados se crearon accidentalmente en Page_Load(). Los controles se deben crear dinámicamente en OnInit().

+0

Exactamente 100%. Esto solucionó nuestro problema. –

+0

controles dinámicos en viewstate para ganar! – JJS

0

Tuve el mismo problema. Tenía 2 listview en una página maestra, asociada con 2 paneles actualizados.

¡Desactivé el EnableViewState en el Listviews para resolverlo!

Cuestiones relacionadas