2009-11-04 3 views
2

Je reçois cette exception aidez-moi comment résoudre ce problème.La validation de viewstate MAC a échoué

Error Time  : 20091104 151412 
Error Message : 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. 
Source   : System.Web 
StackTrace  : at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 
    at System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) 
    at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
    at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 
    at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 
    at System.Web.UI.HiddenFieldPageStatePersister.Load() 
    at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 
    at System.Web.UI.Page.LoadAllState() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    at System.Web.UI.Page.ProcessRequest() 
    at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 
    at System.Web.UI.Page.ProcessRequest(HttpContext context) 
    at ASP.bla_bls_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\87932190\f6393965\App_Web_slwxkxn3.2.cs:line 0 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
Target Site  : Void ThrowError(System.Exception, System.String, System.String, Boolean) 
Inner Exception : System.Web.UI.ViewStateException: Invalid viewstate. 
    Client IP: 172.16.153.71 
    Port: 1466 
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727) 
    ViewState: /wEPDwUKLTg3MDIzOTc1Ng9kFgICAw9kFgICAw9kFgJmD2QWBgIdD2QWAgIBDzwrAA0BAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIUZBYCZg9kFioCAQ9kFhpmDw8WAh4EVGV4dAUDODU4ZGQCAQ8PFgIfAgUKMSAgICAgICAgIGRkAgIPDxYCHwIFDE5ZS1UgNjEwOTc1MGRkAgMPDxYCHwIFAzQwJ2RkAgQPDxYCHwIFA05ZS2RkAgUPDxYCHwIFClgtUHJlc3MgMjFkZAIGDw8WAh8CBRQzMCBPY3QgMjAwOSAwNDowMDowMGRkAgcPDxYCHwIFB1RFTEZPUkRkZAIIDw8WAh8CBQJJS2RkAgkPDxYCHwIFAkZHZGQCCg8PFgQeCUJhY2tDb2xvcgqmAR4EXyFTQgIIZBYCAgEPDxYCHwIFCkluIFByb2Nlc3NkZAILDw8WBB8DCqcBHwQCCGQWAgIBDw8WAh8CBRQwNCBOb3YgMjAwOSAxMTowMDowMGRkAgwPZBYCAgEPDxYCHwIFBkV4ZmFjdGRkAgIPZBYaZg8PFgIfAgUDODU1ZGQCAQ8PFgIfAgUKMiAgICAgICAgIGRkAgIPDxYCHwIFDE5ZS1UgODQ0Mzc0NWRkAgMPDxYCHwIFAzQwJ2RkAgQPDxYCHwIFA05ZS2RkAgUPDxYCHwIFClgtUHJlc3MgMjFkZAIGDw8WAh8CBRQyOSBPY3QgMjAwOSAwMzozMDowMGRkAgcPDxYCHwIFB1RFTEZPUkRkZAIIDw8WAh8CBQJJS2RkAgkPDxYCHwIFAkZHZGQCCg8PFgQfAwqmAR8EAghkFgICAQ8PFgIfAgUKSW4gUHJvY2Vzc2RkAgsPDx... ---> System.Web.HttpException: Unable to validate data. 
    at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) 
    at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 
    --- End of inner exception stack trace --- 

Répondre

2

Vous devez avoir les mêmes clés de validation dans votre fichier web.config sur tous les serveurs.

Vous pouvez générer les clés à l'aide de cette site

+0

Nice! merci pour le lien –

+0

Heureux d'aider :) –

4

Si votre serveur est en cours d'exécution dans le cadre d'un cluster (ie demandes à votre demande sont équilibrées sur plusieurs serveurs), vous devez vous assurer que vos machines sont configuré pour utiliser la même clé machine.

ASP.NET effectue la validation des données ViewState lors d'une publication. Cette validation utilise une clé privée (la clé machine) pour garantir l'intégrité des données. Si vous ne spécifiez pas explicitement cette clé, elle est générée pour vous. Des machines différentes génèrent des clés différentes, et les requêtes équilibrées peuvent donc échouer à la validation car elles sont validées par des clés différentes en fonction de l'endroit où la page est servie et de l'endroit où la publication est renvoyée.

This article vous en apprendra davantage sur l'objectif des clés machine ainsi que sur la configuration de vos serveurs.

+0

Merci d'expliquer ce qui cause réellement le problème! – Flash

0

Veuillez également vérifier votre IIS. Dans la section des connexions, cliquez sur Afficher la liste des pools d'applications, choisissez le pool attendu et accédez au menu de l'outil "Recycler ...". Assurez-vous que suffisamment de mémoire est allouée. Pour voir cela, regardez le processus w3wp.exe utilisé quantité de mémoire dans le gestionnaire de tâches sur la machine sur laquelle IIS est installé. Configurez correctement les propriétés du gestionnaire de recyclage. J'ai supprimé la case à cocher «Utilisation de la mémoire virtuelle» et j'ai préféré planifier des heures spécifiques pour l'application de pool de recyclage.

Questions connexes