2010-11-06 16 views
10

partir formulario ahora, por primera vez, estoy consiguiendo este error cuando comenzamos a depurar mi aplicación MVCerror de depuración de aplicaciones MVC: Validación de estado de vista MAC no

Validación del estado de vista MAC fallidos. Si esta aplicación está alojada en una granja o clúster Web , asegúrese de que la configuración especifique el mismo algoritmo de validación y validación . AutoGenerate no se puede usar en un clúster.

completo seguimiento de la pila

[ViewStateException: Invalid viewstate. 
    Client IP: 127.0.0.1 
    Port: 
    Referer: 
    Path: /Login/LogOn 
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 
    ViewState: Fvq7WNUu+qCC00VbTIOTUuBvK4YHjxp3RubwsrFYW93hKlF7I4GLzaNHceRqjjJB0GwvRPWwlwE6brhAZAo+Mp191B/C+l8Dw/w7aQBDCpWGC3ox6hkSeZp10vbjm9eJFQZmGSPyC1rKYwApBBaz0Q==] 

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.] 
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +198 
    System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +14 
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +274 
    System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4 
    System.Web.Mvc.AntiForgeryDataSerializer.Deserialize(String serializedToken) +176 

¿Qué significa esto?

Tenga en cuenta: el error ocurre solo durante la depuración. Cuando implemente la aplicación en IIS local, todo funciona. Como aparece en el siguiente código en mi página maestra

<form id="__AjaxAntiForgeryForm" action="#" method="post"> 
    <%= Html.AntiForgeryToken() %> 
</form> 
+0

Intenta borrar la caché de tu navegador. – UpTheCreek

+1

Acabo de hacer sin éxito. Si reinicio la computadora todo funciona durante media hora y luego vuelve a aparecer el problema ... – Lorenzo

+0

¿Está implementando su aplicación en un servidor de carga equilibrada? De lo contrario, consulte este enlace aquí: http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx. – mallows98

Respuesta

2

La razón inmediata por qué ocurre esto se debe a que la cookie de antiforgery siendo invalidada. Cerrar y volver a abrir el navegador debería solucionar el problema. Alternativamente, puede intentar eliminar la cookie asociada a su sitio de prueba.

Ahora para la causa subyacente, esto suele ocurrir ya sea porque

  • se encuentra en un escenario de servidores Web y sus diversos servidores no está confiured de la misma manera (pero usted está diciendo que no es el caso)
  • la aplicación cambia el MAC autogenerado debido a cambios que está realizando en la configuración de sus aplicaciones
  • ha aplicado recientemente un parche para corregir la vulnerabilidad de cifrado Asp.Net ViewState (que cambió la forma en que se realiza el cifrado en asp.net).

¿Le suena familiar esto?

+0

Excluiría el primer punto en forma absoluta. En relación con el segundo y el tercer punto, he instalado los parches para la reciente vulnerabilidad de ASP.NET a través de Windows Update tan pronto como estuvieron disponibles, pero el problema comenzó a aparecer solo en los últimos días cuando agregué Antiforgerytoken a mis vistas. . – Lorenzo

1

Tuvimos un problema similar después de reparar el servidor para arreglar la vulnerabilidad de ASP.NET cuando se lo vio en máquinas sin KB2416471 instalado.

+0

Hola, gracias por tu publicación. El problema parece no considerarme porque aparece en Vista x64, donde el parche al que se refiere no está presente. De todos modos tengo KB2416470, KB2416472 y KB2416473 instalados a través de Windows Update – Lorenzo

+0

@Lorenzo sí, sorprendentemente, tuvimos este problema al ver un sitio desde máquinas que no tenían instalado el parche. –

+0

Eso es interesante.Pero en mi caso hay algo más extraño: si trato de depurar la aplicación en mi máquina (VS2010, SQLEXPRESS) aparece el problema. Cuando, en cambio, estoy desplegando localmente siempre en mi máquina (IIS7, SQL EXPRESS), el problema no aparece ... – Lorenzo

Cuestiones relacionadas