w10 sp1 para net full framework for error actualizar asp.net-mvc .net-3.5 cryptography viewstate

asp.net mvc - para - Html.AntiForgeryToken() causa errores después de actualizar a.NET 3.5 SP1



net framework 3.5 server 2012 (3)

Acabo de actualizar a .NET 3.5 SP1 y mi página ASP.NET MVC, que alguna vez estuvo funcionando, ha dejado de funcionar.

Cuando intento cargar una página obtengo el siguiente YSOD

[CryptographicException: Padding is invalid and cannot be removed.] System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) +7596702 System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +208 System.Security.Cryptography.CryptoStream.FlushFinalBlock() +33 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) +225 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +195 [ViewStateException: Invalid viewstate. Client IP: 127.0.0.1 Port: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729) ViewState: hC6BC8KsuD/yoy2iG74bUZ8TYhGfuDDeIjh9fg/L18yr/E+1Nk/pjS5gyn9O+2jY Referer: http://localhost:1092/admin/product Path: /admin.aspx/product/edit/4193] [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) +106 System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +14 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +242 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4 System.Web.Mvc.AntiForgeryTokenSerializer.Deserialize(String serializedToken) +73

Si elimino la línea

<%= Html.AntiForgeryToken() %>

Todo funciona de nuevo, ¿alguna idea de lo que podría estar causando esto? Hubiera esperado más suerte para encontrar una solución si esto era un problema MVC o .NET, así que supongo que tiene algo que ver con mi configuración.

Intenté volver a instalar el marco MVC para ver si era porque lo instalé antes de SP1 pero sigo teniendo el mismo problema. La búsqueda de Google y SO no ha dado lugar a conclusiones firmes.


Doh, acabo de resolverlo.

Borré la memoria caché y las cookies de mi navegador y todo vuelve a funcionar bien.



La eliminación de la memoria caché del navegador no es una opción si el sitio ya está implementado y usted está realizando tareas de mantenimiento, incluida una actualización del conjunto ASP.NET MVC. Aquí está la solución que utilicé:

@Html.AntiForgeryTokenReset() @* use this instead*@

aquí está el método de extensión

public static MvcHtmlString AntiForgeryTokenReset(this HtmlHelper htmlHelper) { try { return htmlHelper.AntiForgeryToken(); } catch (Exception ex) { var request = HttpContext.Current.Request; request.Cookies.Clear(); return htmlHelper.AntiForgeryToken(); } }