Pregunta

Uno de los sitios que mantengo depende en gran medida del uso de ViewState (no es mi código).Sin embargo, en ciertas páginas donde el ViewState está extra hinchado, Safari lanza un "Validation of viewstate MAC failed" error.

Parece que esto sólo sucede en Safari.Firefox, IE y Opera se cargan correctamente en el mismo escenario.

¿Fue útil?

Solución 3

He estado investigando un poco sobre esto y, aunque no estoy del todo seguro de cuál es la causa, creo que se debe a que Safari no devuelve el conjunto de resultados completo (por lo tanto, lo recorta).

Estuve conversando con otro desarrollador y también encontré la siguiente publicación en el Canal 9 que recomienda utilizar el servicio SQL State para almacenar el estado de visualización evitando el problema de la devolución de datos y también el tamaño de la página.

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

¿Parece esta la mejor solución?

Otros consejos

Si bien apoyo la solución del Canal 9, también tenga en cuenta que en algunos entornos alojados, Safari no se considera un navegador de nivel superior.Es posible que deba agregarlo al navegador de su aplicación para poder utilizar algunas funciones de ASP.Net.

Esa fue la causa principal de algunos dolores de cabeza que tuvimos en el sitio de un cliente que usaba el control de menú ASP.

Mi primer paso sería revisar los elementos de la página y ver qué controles:

  1. Seguirá funcionando cuando apague ViewState
  2. Se puede sacar de la página y colocarlo en una llamada AJAX para cargarlo cuando sea necesario.

De lo contrario, aquí está el descargo de responsabilidad: nunca he usado esta solución en un sitio web, pero en el pasado, cuando quería eliminar ViewStates masivos en aplicaciones de audiencia limitada, almacené ViewState en la sesión.

A mí me ha funcionado porque el impacto en la memoria no es significativo para la cantidad de usuarios, pero si estás ejecutando un sitio bastante popular, no recomendaría este enfoque.Sin embargo, si la solución Session funciona para Safari, siempre puedes detectar el agente de usuario y modificarlo adecuadamente.

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