2012-04-03 7 views
1

Ich bekomme diesen Fehler, und ich weiß, was es verursacht. Es gibt viele Ursachen, aber in meinem Fall besteht das Problem darin, dass der Maschinenkopf von Server zu Server (in der Webfarm) unterschiedlich ist und daher, wenn er von Maschine zu Maschine springt, er Viewstate und/oder Cookies nicht entschlüsseln kann. Ich habe dieses Problem inzwischen behoben, aber einige Benutzer haben noch einen Cookie auf ihrem Rechner, der mit dem alten Maschinenkopf geschrieben wurde, und sie erhalten diesen Fehler. Ich brauche eine gute Möglichkeit, diesen Fehler zu behandeln, sie ausloggen und dann zurück auf die Anmeldeseite umleiten. Ich habe versucht, eine Ausnahmebehandlung in global.asax in Application_error, aber dies scheint nicht für diesen Fehler ausgelöst werden. Es gibt andere Fehler, die passieren, und ich habe gefiltert, um nur diesen Fehler zu erfassen (indem ich auf die Ausnahme schaue). Ich habe customErrors 'on' in der web.config. Wie mache ich das?asp.net Kann Daten nicht validieren

Antwort

1

Es gibt einige Möglichkeiten, dieses Problem zu lösen. Die beste Gesamtlösung ist die Verschlüsselungs- und Entschlüsselungsschlüssel explizit in den machine.config jeden Server zu setzen:

<machineKey validationKey="JFDSGOIEURTJKTREKOIRUWTKLRJTKUROIUFLKSIOSUGOIFDS..." decriptionKey="KAJDFOIAUOILKER534095U43098435H43OI5098479854" validation="SHA1" /> 

Eine weitere Option ist die Verschlüsselung des Viewstate vollständig zu deaktivieren, aber Sie werden dies einige Sicherheitsvorteile verlieren, indem Sie:

<pages viewStateEncryptionMode="Never" /> 

Schließlich können Sie die Validierung deaktivieren:

<pages enableViewStateMac="false" ... /> 
+0

Ja - vielleicht habe ich in meiner Frage nicht klar war. Ich weiß, wie das Problem "Daten nicht validieren" gelöst werden kann, aber ich möchte, dass Benutzer, die bereits Cookies haben, diesen Fehler nicht erhalten, wenn ich die Schlüssel in die Datei machine.config lege. Ich möchte den Fehler im Grunde elegant behandeln und sie auf eine Anmeldeseite (oder eine andere Seite) umleiten. –