javascript resources viewstate

javascript - ¿Viewstate inválido para ScriptResource.axd?



resources (7)

Los recursos de Script y Web Resource generan errores intermitentes en mi aplicación. He estado tratando de perseguir la causa del problema, pero fue en vano. Observé que el parámetro "d" que se pasa es de alguna manera corrupto y no puedo por la vida de averiguar qué está causando la corrupción de este parámetro. Noté que el código de JavaScript que hay en mi aplicación es una forma de entrelazarme con el código hash que se genera para el parámetro "d".

Exception genereated on Monday, January 26, 2009, at 2:20 AM Page location: /ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk%20%20%20%20%20%20%20%20%20%20%20%20if%20(cat_gallery%20!= Requested Url : http://garmn.factoryoutletstore.com/ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk if (cat_gallery != Message: Exception has been thrown by the target of an invocation. Source: mscorlib Method: System.Object _InvokeMethodFast(System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeTypeHandle) Stack Trace: at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Web.Handlers.ScriptResourceHandler.DecryptString(String s) at System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection queryString) at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) at System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Inner Exception: System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s) User IP: 74.34.62.187 BaseMessage : Exception genereated on Monday, January 26, 2009, at 2:20 AM Page location: /ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk%20%20%20%20%20%20%20%20%20%20%20%20if%20(cat_gallery%20!= Requested Url : http://garmn.factoryoutletstore.com/ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk if (cat_gallery != Message: Invalid viewstate. Source: System.Web Method: System.String DecryptStringWithIV(System.String, System.Web.Configuration.IVType) Stack Trace: at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s) User IP: 74.34.62.187 User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; Zune 3.0)


Ok, bienvenidos al infierno que es MS ajax.

este bit es interesante

Url solicitado: http://garmn.factoryoutletstore.com/ScriptResource.axd?d=y9_dUwBeGqLlRpT5Dml1zhoQvfa7NKdj69EYuV771kzSsa5KOOXBfJZjk if (cat_gallery! = Mensaje: viewstate no válido

que "if (cat_gallery! =" parece un poco fuera de lugar. Me gustaría ver el javascript alrededor de eso si y ver si hay algo que parece sospechoso

Suponiendo que está utilizando paneles de actualización, ese bit sobre viewstate no válido me lleva a pensar que viewstate se está volviendo loco entre solicitudes parciales. Mi suposición (no basada en hechos, más en la experiencia y el dolor) es que es una de dos cosas; o tiene varios paneles y el estado está fuera de control (el panel 1 actualiza el estado, el panel 2 se dispara inmediatamente y no recoge los cambios) o está relacionado con el ciclo de vida de la página (he visto que múltiples enlaces de datos causan estado de visualización no válido en la página parcial devoluciones de datos)

Yo diría que lo primero es tratar de reproducir el error. Ve a la página en la que sucede y prueba cada combinación de comportamiento que puedas imaginar. Una vez que tenga un error reproducible, conecte un depurador y coloque los puntos de interrupción en todo, luego simplemente recorra el ciclo de vida de la página y vea si hay alguna ruta de código vagando en direcciones que no anticipó.

De cualquier manera, MS AJAX es extremadamente negro, por lo que los problemas de depuración a su alrededor pueden ser terriblemente difíciles (pasé unas 20 horas haciendo lo que te recomendé la semana pasada) Te deseo la mejor de las suertes, y realmente espero que esto te ayude por el camino correcto.


Esta podría ser una respuesta tonta, pero ¿ha revisado su administrador de estado de la sesión? el valor predeterminado es IN PROC, que no funciona con una granja de servidores web, necesita usar SQL o algún otro administrador de estado.


Hola Matt, muchas gracias por tu ayuda. Ok esto es lo que tengo Aviso en mi análisis, esta Solicitud parece estar siempre entrelazada con el mismo código JavaScript, he incluido una línea de mi registro de errores que muestra la URL solicitada que causó el problema.

/ScriptResource.axd?d=70kBR-jPBTx9R89FxObjhipHPS9CMlta5StoreUrl''%20is%20already%20set.%20*/function%20runSearchForField(eventObj,%20id){%20%20%20%20if%20((eventObj.which%20==%2013)%20||%20(eventObj.keyCode%20==%2013))%20%20%20%20%20{%20%20%20%20%20%20%20%20var%20cat_gallery%20=%20%20getParam(''gallery'');%20%20%20%20%20%20%20%20var%20cat%20=%20getParam(''cat'')%20%20%20%20%20%20%20%20var%20searchTerm%20=%20escape(document.getElementById(id).value);%20//%20must%20use%20escape()%20function%20to%20urlencode%20search%20term%20to%20avoid%20issues%20with%20''&''%20and%20''=''%20symbols%20%20%20%20%20%20%20%20var%20url;%20%20%20%20%20%20%20%20%20%20%20%20if%20(cat_gallery%20!=

como puede ver, el parámetro "d" está dañado. Lo que ocurre aquí es que System.Web.UI.Page.DecryptString lanzará un error de estado de vista no válida cuando intente descifrar esta cadena. Lo que me gustaría saber es cómo puede esta cadena resultar corrupta. Eché un vistazo al JavaScript y todo parece estar bien para mí, lo único extraño es que hay algunos comentarios en el código que son comentarios con / * para indicar que la línea son solo comentarios. No estoy usando paneles anidados, pero sí tengo un panel de actualización en la página.


He estado analizando los datos que he estado recopilando y he sacado algunas conclusiones. Noté que la gran mayoría de los errores que he recibido provienen de las computadoras con Windows Vista que ejecutan IE 8 o Firefox 3. También hubo algunos casos en los que se vieron Vista e IE 7. Esto podría explicar por qué los errores ahora son solo convirtiéndose en un problema a medida que más y más personas utilizan el nuevo sistema operativo.

Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident / 4.0; FunWebProducts; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GoogleT5; MSN optimizado; CA; MSN optimizado; CA) Mozilla / 4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident / 4.0; GTB5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Center PC 5.0)

Pero de todos modos la conclusión a la que quiero llegar es que basándome en esta información, comencé a investigar cómo los navegadores procesan los scripts de Java y si había algo nuevo que podría estar causando este problema, es cuando me sale algo interesante, encontré en el sitio web de w3School un artículo sobre la diferencia en html vs. xhtml.

Las diferencias entre HTML y XHTML HTML 4 y XHTML son diferentes con el contenido dentro de las secuencias de comandos:

En HTML 4, el tipo de contenido se declara como CDATA, lo que significa que las entidades no serán analizadas. En XHTML, el tipo de contenido se declara como (#PCDATA), lo que significa que las entidades se analizarán. Esto significa que en XHTML, todos los caracteres especiales deben estar codificados o todo el contenido debe estar dentro de una sección CDATA.

Para asegurarse de que una secuencia de comandos analiza correctamente en un documento XHTML, use la siguiente sintaxis:

Así que de inmediato eché un vistazo a mi código y vi que la directiva DOCTYPE faltaba en algunas de mis páginas las mismas que están causando el Issue. También noté que cuando emitía JavaScript utilizando la rutina .NET Register Client Script, envuelve el contenido interno de las etiquetas de script con el atributo CDATA, mientras que donde estaba el JavaScript normal escrito en la página no se usaba CDATA. Por ejemplo

Función RunMe () {}

No soy experto en la forma en que el navegador procesa o analiza el retorno html, pero creo firmemente que tiene algo que ver con la situación anterior porque el parámetro Url en la solicitud del recurso de script siempre que falla contiene código entre las etiquetas de script que están debajo . Algunas veces incluso hay código de hoja de estilo html que se puede encontrar allí también. Por ejemplo

http://braun.factoryoutletstore.com/ScriptResource.axd?d=70kBR-jPBTx9R89FxObjhipHPS9CMlta5W6ZZiqkaa5zNOXUU4DtsY8V_8function runSearchForField (eventObj, id) {if ((eventObj.which == 13) || (eventObj.keyCode == 13)) {var cat_gallery = getParam (''galería''); var cat = getParam (''cat'') var searchTerm = escape (document.getElementById (id) .value); // debe usar la función escape () para urlencode el término de búsqueda para evitar problemas con los símbolos ''&'' y ''='' var url; si (cat_

http://braun.factoryoutletstore.com/ScriptResource.axd?d=9vS7Hk65j_0hD8to_aPDj

Ahora lo que estoy pensando es que de alguna forma porque no estoy especificando ningún DOCTYPE en la página que el navegador podría estar tratando de inferir en base a los datos que recibe, entonces termina arruinándose porque a veces hay CDATA y hay momentos en que no hay CDATA presente en la página. Realmente no sé si esto es una suposición sólida ya que dicen suposiciones como peligrosas. Si alguien puede dar sombra a mi teoría, avíseme si los navegadores están analizando el xhtml de forma diferente a la versión anterior o incluso si tenían alguna situación similar.


Hemos experimentado lo mismo y parece estar relacionado con un error en el motor de renderizado de IE8.

Eche un vistazo a los siguientes recursos: http://blogs.msdn.com/ieinternals/archive/2009/07/27/Bugs-in-the-IE8-Lookahead-Downloader.aspx http://connect.microsoft.com /IE/feedback/ViewFeedback.aspx?FeedbackID=467062

Básicamente, hay algunas etiquetas en la página que causan un "reinicio del analizador" que hace que se omitan 4K del HTML en la página. Esto significa que el navegador está colocando HTML en ScriptResource.axd que ocurre 4096 bytes más adelante en la página.


Estos errores tienden a suceder si aloja su sitio en un clúster de equilibrio de carga o en una granja de servidores web. Si despliega su aplicación en ese entorno, debe asegurarse de que los archivos de configuración en cada servidor comparten el mismo valor para validationKey y decryptionKey, que se usan para el hash y el descifrado, respectivamente. Esto es necesario porque no puede garantizar qué servidor manejará solicitudes sucesivas.

Con valores clave generados manualmente, la configuración debe ser similar al siguiente ejemplo. Asegúrese de que el elemento se encuentre debajo de la sección en el archivo web.config.

<machineKey validationKey="0BE61B38B9836B541C45728ADB9D93A6FD819169DBB6AD20078A70F474650CC0295C69131E083A6B3762C457BBAF3E66E18F294FDA434B9DD6758631A90A2E20" decryptionKey="B80CC12266B36CCF35EF0708DB5854EDA3BBEBA1A7C89A4E" validation="SHA1"/>

Aquí hay un ingenioso pequeño generador de claves que puede usar para generar los valores clave: http://www.eggheadcafe.com/articles/GenerateMachineKey/GenerateMachineKey.aspx

Entonces, como ya habrás adivinado, el parámetro d en ScriptResource.axd es en realidad la clave de descifrado, y cuando esa clave no coincide con la solicitud anterior, .NET Framework generará un error de estado de vista no válido.

¡Espero que ayude!


Creo que estos errores ocurren con diferentes navegadores por diferentes razones, que es lo que hace que sea tan difícil de rastrear.

IE8 Bug

Microsoft ha dicho que un error en IE8 generará (en algunas circunstancias) solicitudes espurias al servidor, que no afectan al usuario pero conducen a errores que se registran en el servidor.

Vea esta discusión aquí: Error IE8 - 4K descartado - "estado de vista inválido" cuando se carga ScriptResource.axd

... particularmente la actualización de EricLaw-MSFT cuando dice:

Vale la pena mencionar que cualquiera que esté experimentando un problema aquí en IE6 / IE7 o Firefox se encuentra con un problema diferente que no está relacionado con el problema IE8 que se describe a continuación.

Ver también errores en LookAhead Downloader de IE8

Dicen que cambiar la forma en que configuras Content-Type te ayudará con algunos de los errores, aunque no todos, dicen que es causado por varias circunstancias oscuras que todavía están viendo.

Actualización: A partir del 01 / Apr / 2010, estos errores IE8 se han corregido, a través de IE8 actualización acumulativa (KB980182).
Esta publicación: IE8 Lookahead Downloader Fixed brinda más detalles sobre los errores y otras posibles soluciones alternativas, además de esperar a que todos en el mundo descarguen la solución.

Otros navegadores

Aún no lo hemos descubierto, pero otros navegadores también están generando estos errores, presumiblemente por diferentes motivos.

Granjas web

Este problema no se limita a los sitios que se ejecutan en granjas web, pero si está ejecutando una granja, consulte esta respuesta de jesal, que puede ayudar