Ich habe eine Website entwickelt, die auf localhost Cassini testet und es lief immer gut. Wenn ich jetzt auf meinem Webserver bin, erhalte ich zeitweise den folgenden Fehler:
Global.Application_Error Fehler: Während der Anforderung ist eine Ausnahme eingetreten: Ссылка Die Daten konnten nicht validiert werden. beim System.Web.Configuration.MachineKeySection.GetDecodedData (Byte [] buf, Byte [] Modifikator, Int32 Start, Int32 Länge, Int32 & amp; Datenlänge) bei System.Web.UI.ObjectStateFormatter.Deserialize (String inputString) HttpApplication.RaiseOnError = & gt; EventHandler.Invoke = & gt; Global.Application_Error
Dies wird in meinem global.asax gefangen. Ich habe gesucht, kann aber die Ursache nicht finden. Diese Ausnahme wird in sehr einfache und kleine Webforms geworfen. Die Website wird nicht in einer Webfarm gehostet.
2 Seiten scheinen diesen Fehler zeitweise zu verursachen, und einer von ihnen speichert einen bool in ViewState, aber es wird davon abgesehen nicht verändert.
Hat jemand schon mal darüber gestolpert?
Ursache: Der Hauptgrund dafür ist der Unterschied des Schlüssels beim Verschlüsseln und Entschlüsseln der Viewstate-Daten. Angenommen, ein asp.net hat eine Seite mit key1 gerendert und den Seitenstatus im Ansichtszustand gespeichert, während der Schlüssel von asp.net zu key2 geändert wurde. Wenn nun ein serverseitiges Ereignis auf der Seite auftritt, wird der Viewstatus entschlüsselt und dieser Fehler tritt auf Der alte Ansichtszustand ist aufgrund eines anderen Verschlüsselungsschlüssels nicht mehr gültig.
Es kann auftreten, wenn Sie eine Seite für längere Zeit öffnen und danach einige Ereignisse ausführen.
Lösung Korrigieren Sie den Schlüssel in Ihrer Datei web.config, sodass nur ein Schlüssel zum Verschlüsseln und Entschlüsseln der Daten des Ansichtsstatus verwendet wird.
Weitere Informationen finden Sie unter:
Ich konnte in meiner asp.net-Webanwendung "System.Web.Configuration.MachineKeySection.EncryptOrDecryptData" nicht validieren. Ich löschte meine Kekse und die Ausnahme hörte auf.
hatte denselben Fehler. Der Maschinenkopf und der Entschlüsselungskey waren in allen web.config dieselben, aber einige web.config hatte
%Vor%und andere nicht. Dieser Schlüssel wurde aus allen web.config entfernt. Ich denke nicht, dass die Lösung darin besteht, den Schlüssel zu entfernen, sondern in allen web.config
zu sein In meinem Fall hatte ich zwei Webanwendungen (eine war sehr alt und eine andere, die ich gerade erstellt hatte) und trotz der gleichen Maschinenschlüsseleinstellungen waren Tickets, die in einer Anwendung generiert wurden, in einer anderen nicht verwendbar. Dies wurde behoben, indem compatibilityMode="Framework20SP2"
als Argument für machineKey
node in web.config
in neueren Anwendungen hinzugefügt wurde.