10 Stimmen

Was bedeutet die Ausnahme "Unable to validate data" in System.Web.Configuration.MachineKeySection.GetDecodedData?

Ich habe eine Website Tests auf localhost Cassini entwickelt und es hat immer gut laufen, jetzt, wenn ich auf meinem Webserver bereitstellen ich intermittierend den folgenden Fehler erhalten:

Global.Application_Error Fehler: Während der Anfrage ist eine Ausnahme aufgetreten: http://....blah.aspx Daten können nicht validiert werden. at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) HttpApplication.RaiseOnError => EventHandler.Invoke => Global.Application_Error

Dies wird in meiner global.asax aufgefangen. Ich habe herumgesucht, kann aber die Ursache nicht finden. Diese Ausnahme wird in extrem einfachen und kleinen Webformularen ausgelöst. Die Website wird nicht in einer Webfarm gehostet.

2 Seiten scheinen diesen Fehler sporadisch zu verursachen und eine davon speichert einen bool im ViewState, der aber ansonsten nicht verändert wird.

Ist das schon einmal jemandem aufgefallen?

14voto

StevenMcD Punkte 16862

http://dotnetcoderoom.wordpress.com/2008/11/07/unable-to-validate-data-aspnet-error/

Ursache: Der Grund dafür ist der Unterschied zwischen den Schlüsseln beim Verschlüsseln und Entschlüsseln der Viewstate-Daten. Angenommen, ein asp.net gerendert eine Seite mit key1 und speicherte die Seite Zustand in Ansicht Zustand, inzwischen asp.net's Schlüssel zu key2 geändert wird, jetzt, wenn einige Server-Side-Ereignis auf Seite der viewstate auftreten wird entschlüsselt und dieser Fehler auftreten, wie die alte Ansicht Zustand ist jetzt nicht gültig aufgrund einer anderen Verschlüsselung Schlüssel.

Es kann vorkommen, dass Sie eine Seite für einige Zeit öffnen und danach einige Ereignisse auf dieser Seite durchführen.

Lösung Fixieren Sie den Schlüssel in Ihrer web.config-Datei, so dass nur ein Schlüssel zur Ver- und Entschlüsselung der Viewstate-Daten verwendet wird.

Für weitere Informationen besuchen Sie uns:

http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_21321364.html

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312906

0 Stimmen

+1 Gute Antwort - hier ist eine öffentliche Implementierung des Codes auf der Technet-Seite: developmentnow.com/articles/machinekey_generator.aspx

0 Stimmen

Ich habe einen machineKey in meiner web.config hinzugefügt, und keine Fehler noch, so hoffentlich ist dies die Lösung

0 Stimmen

Ich bin mir nicht sicher, dieses Problem ist mir bisher noch nicht begegnet. Ich werde sehen, ob ich etwas finden kann

12voto

Joey Guerra Punkte 536

Ich habe in meiner asp.net-Webanwendung die Meldung "Daten können nicht validiert werden System.Web.Configuration.MachineKeySection.EncryptOrDecryptData" erhalten. Ich löschte meine Cookies, und die Ausnahme hörte auf.

0 Stimmen

Sie sind auf jeden Fall an etwas dran. Bei mir war es so, dass ich den Pfad einer IIS-Website zu einer anderen Website geändert habe, die dieselbe ASP.NET-Formularlösung und dieselben domänenbasierten Cookies verwendet, ABER eine andere Maschinenschlüsselkombination in web.config. Es wurde also angenommen, dass das Cookie für die NEUE Website gilt, was aber nicht der Fall war. Beim Entschlüsseln von Daten, die von der vorherigen Website verschlüsselt wurden, kam es zum Absturz. Booya! Vielen Dank für den Tipp.

4voto

Jon Punkte 655

Versuchen Sie, einen Maschinenschlüssel zu Ihrer web.config hinzuzufügen, um zu sehen, ob dies den Fehler behebt

http://aspnetresources.com/tools/keycreator.aspx

1 Stimmen

Ich habe einen machineKey in meiner web.config hinzugefügt, und keine Fehler noch, so hoffentlich ist dies die Lösung

1voto

n0rd Punkte 10579

In meinem Fall hatte ich zwei Webanwendungen (eine sehr alte und eine andere, die ich gerade erst erstellt hatte), und obwohl ich die gleichen Einstellungen für den Maschinenschlüssel hatte, waren die in einer Anwendung erstellten Tickets in der anderen nicht verwendbar. Das wurde behoben, indem ich Folgendes hinzufügte compatibilityMode="Framework20SP2" als Argument für machineKey Knoten in web.config in neueren Anwendungen.

0voto

Jeanseb Punkte 45

Hatte den gleichen Fehler. Der machinekey und decryptionKey waren in allen web.config gleich, aber einige web.config hatten

    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />

und andere nicht. Ich habe diesen Schlüssel aus allen web.config entfernt. Ich glaube nicht, dass die Lösung im Entfernen des Schlüssels liegt, sondern darin, dass er in allen web.config gleich ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X