2009-07-17 9 views
1

Validierung des Viewstatus MAC fehlgeschlagen. Wenn diese Anwendung von einer Webfarm oder einem Cluster gehostet wird, stellen Sie sicher, dass die Konfiguration <machineKey> denselben validationKey und denselben Validierungsalgorithmus angibt. AutoGenerate kann nicht in einem Cluster verwendet werden."Validierung von ViewState MAC ist fehlgeschlagen" - Was bedeutet dieser Fehler?

Ich benutze localhost BTW.

+0

Sie müssen wirklich mehr zu erklären. Gib Code, was du versuchst zu tun usw. – AlbertoPL

+0

Danke Sean Bright :) – Yves

+1

Viele Gründe dafür. http://stackoverflow.com/search?q=%E2%80%9CValidation+of+ViewState+MAC+failed%E2%80%9D – Greg

Antwort

1

Standardmäßig versucht ASP.NET, den Ansichtszustand zu überprüfen. Wenn die Validierung fehlschlägt, wird diese Ausnahme ausgelöst. Zu den Gründen, die möglicherweise nicht überprüft werden, gehören das erneute Kompilieren der Site und das anschließende Aktualisieren eines Formulars in Ihrem Browser oder einer Serverfarm/eines Clusters (wenn Sie jedoch localhost verwenden, lehne ich mich dem ersten zu).

Sie können dies ausschalten, wenn es Sie wirklich behindert, aber dann kann jeder mit Ihrem Viewstate Affe. Dies ist keine große Sache, solange Sie den Benutzereingaben nicht vertrauen (und das sollten Sie nicht). In Ihrer web.config:

<pages enableViewStateMac="false" /> 
+2

Woah. Erstens haben Viewstate-Fehler wie diese nichts mit der Validierung von Ereignissen zu tun (das wird sie nicht lösen), und zweitens ist das Ausschalten der Ereignisvalidierung eine extrem schlechte Idee. Die von Ihnen generierte Eingabe unterliegt nicht Ihrer Kontrolle. – blowdart

+0

Ja, tut mir leid, ich habe das falsche Attribut kopiert - ich habe meine Antwort bearbeitet. –

-2

Check out this long thread on the official ASP .NET forum - es ziemlich deckt die ganze Grund, warum diese und einige Lösungen auftreten können.

Beachten Sie die folgenden kann oft eine sein tempoary zu beheben, aber bitte der Auswirkungen auf die Sicherheit bewusst sein, dies zu tun.

<pages validateRequest="false" enableEventValidation="false" viewStateEncryptionMode ="Never" /> 
+0

Ich möchte die temporäre Lösung verwenden, aber Angst, die Sicherheit zu gefährden. – Yves

1

Es kann sein, mit App-Recycling zu tun. Viewstate wird von einem Schlüssel signiert, der beim ersten Start der Anwendung generiert wird. Wenn Ihr Anwendungspool zwischen Anforderungen rezykliert wurde, ändert sich der Signierungsschlüssel für Viewstate und der vorherige Viewstate ist ungültig und Sie sehen die Ausnahme.

Um dies auszuschließen, können Sie set a specific machine key in Ihrer web.config.

Eine andere Sache von Bedeutung ist, dass, wenn Sie eine Seite haben, die Datenbindung stark verwendet, Ihr Viewstate sehr groß sein kann und die Seite möglicherweise auf dem Browser rendern, bevor es abgeschlossen ist, und wenn Sie dann etwas tun, das verursacht Zurückschreiben, bevor die Seite vollständig heruntergeladen wurde, möglicherweise wird der Fehler angezeigt. Dies wurde in .NET 3.5 SP1 behoben. Sie können dies auch beheben, indem Sie das Formular als deaktiviert darstellen und es dann clientseitig aktivieren oder ändern, wo viewstate generiert wird. Der ASP.NET-Debugging-Blog hat the instructions.

Wenn es immer noch passiert, versuchen Sie nicht, Änderungen an der Viewstate Formularfeld mit Javascript sind Sie?

+0

Der Link "Einen bestimmten Maschinenschlüssel festlegen" ist ungültig. – MikeWyatt

Verwandte Themen