"Validation of viewsate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. Autogenerate cannot be used in a cluster. "
Este problema surge cuando realizas una validación de usuarios en entorno un WebFarm o Cluster y cada aplicación autogenera una machineKey como su identificador. Concretamente esta configuración provoca que si varias aplicaciones web, con validación de usuarios, conviven en el mismo servidor, al realizar una validación de usuario con el mismo sistema, se les va autogenerando la machineKey, y claro, ¿que pasaria cuando se produzca el hecho que las machineKeys coincidan? La respuesta es sencilla, el error de arriba. Así mismo, otro problema colateral con el que me encontré, era el hecho que de repente las variables de sesión se quedaban sin valor.
- Deshabilitar ViewState en el Web.Config añadiendo lo siguiente dentro de
: <system.web> <pages enableviewstatemac="false"> - Deshabilitar ViweState en las páginas añadiendo lo siguiente en la cabecera de los archivos aspx: enableViewStateMac="False".
- Evitar que el pool cree el MachineKey para la aplicación, se le asigna uno manualmenteen el web.config. Para este punto la siguiente web los crea: http://aspnetresources.com/tools/keycreator.aspx
<%@ Page Language="c#" AutoEventWireup="false" Codebehind="MyPage.aspx.cs" Inherits="MyAssembly.MyPage" enableViewStateMac="False" %>
<machineKey validation="SHA1" validationKey="F3690E7A3143C185A6A8B4D81FD55DD7A69EEAA3B32A6AE813ECEEC" />