Frage

Was ist die Ursache für diese Ausnahme in ASP.NET? Offensichtlich ist es eine Ansichtszustand Ausnahme, aber ich kann nicht den Fehler auf der Seite reproduzieren, die die Ausnahme (eine einfache zwei TextBox Form mit einem Knopf und Navigationslinks) werfen.

FWIW, ich bin kein Web-Farm ausgeführt wird.

Ausnahme

  

Fehlermeldung: Kann nicht bestätigen   Daten.

     

Fehler Quelle: System.Web

     

Fehlerzielsite: Byte []   GetDecodedData (Byte [], Byte [], Int32,   Int32, Int32 ByRef)

Post Daten

  

VIEWSTATE:

     

/ wEPDwULLTE4NTUyODcyMTFkZF96FHxDUAHIY3NOAMRJYZ + CKsnB

     

Eventvalidation:

     

/ wEWBAK + 8ZzHAgKOhZRcApDF79ECAoLch4YMeQ2ayv / Gi76znHooiRyBFrWtwyg =

Ausnahme-Stack-Trace

   at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
   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.default_aspx.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

~ William Riley-Land

War es hilfreich?

Lösung

Die wahrscheinlichste Ursache für diesen Fehler ist, wenn ein Postback, bevor alle Ansichtszustände Lasten gestoppt wird (der Benutzer trifft den Stopp oder Zurück-Tasten), wird der Ansichtszustand nicht den Fehler zu überprüfen und zu werfen.

Andere mögliche Ursachen:

  • Ein Anwendungspool Recycling zwischen dem Zeitpunkt der Ansichtszustand erzeugt wurde, und die Zeit, dass der Benutzer trägt ihn zurück an den Server (unwahrscheinlich).
  • Eine Web-Farm, wo die Machine nicht synchronisiert ist (nicht Ihr Problem).

Update: Microsoft-Artikel zu diesem Thema . Zusätzlich zu den oben schlagen sie zwei andere mögliche Ursachen:

  • Änderung des Ansichtszustandes durch Firewalls / Anti-Virus-Software
  • Posting von einer aspx Seite zur anderen.

Andere Tipps

In .NET 3.5 SP1 die RenderAllHiddenFieldsAtTopOfForm Eigenschaft wurde die Pagessection-Konfiguration hinzugefügt.

Web.config

<configuration>

    <system.web>

        <pages renderAllHiddenFieldsAtTopOfForm="true"></pages>

    </system.web>

</configuration>

Interessanterweise ist der Standardwert dieses wahr. Also, im Grunde, wenn Sie .NET 3.5 SP1 verwenden, dann wird das Viewstate automatisch am oberen Rand des Formulars gemacht zu werden (vor dem Rest der Seite geladen wird), wodurch die Beseitigung der Fehler Viewstate Sie bekommen.

Ich habe das Problem mit bestimmten Versionen von Safari erlebt 3. Meine Lösung, die die Viewstate an die Spitze der Form zu bewegen war (die Page-Klasse erweitert und überschrieb die Render-Methode für Pre-3.5 SP1 oder .NET 3.5 SP1 und später tut dies, indem Standard), und statt einer Monster-Datei mit dem Viewstate mehrere verschiedene Felder aufgeteilt. Siehe Chunking Viewstate in ASP.NET 2.0 (MaxPageStateFieldLength)

Dieses kostenlose Online-Tool: http://aspnetresources.com/tools/machineKey erzeugt ein machineKey Element unter dem system.web Element in der Datei web.config. Hier ist ein Beispiel dafür, was es erzeugt:

<machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" />

Wenn Sie dies in Ihrem web.config zu sehen, der Fehler selbst macht plötzlich Sinn. Der Fehler, den Sie bekommen, sagt

  

"sicherzustellen, dass die Konfiguration die gleiche spezifiziert   validationKey und Validierungsalgorithmus“.

Wenn Sie an diesem machineKey Elemente suchen, plötzlich kann man sehen, was es spricht.


Mit dem „harten Codierung“ diesen Wert in Ihrer web.config, ist der Schlüssel, dass asp.net serialisiert verwendet und deserialisieren Ihre Ansichtszustand bleibt gleich, egal welche Server in einer Server-Farm nimmt ihn auf. Ihre Verschlüsselung wird "portable", also Ihr Ansichtszustand wird "tragbar".

Ich kann nur raten, dass vielleicht auch die selben Server (nicht in einem Bauernhof) hat dieses Problem, wenn es aus irgendeinem Grund „vergisst“ der Schlüssel hatte, entstand durch einen Reset auf jeder Niveau, das es aus wischt. Das ist vielleicht, warum dieser Fehler nach einer Standzeit zu sehen und Sie versuchen, eine „veraltete“ Seite nutzen zu können.

  

„ein Postback wird gestoppt, bevor alle Ansichtszustand Lasten“

Ich habe vor genau dieses Problem hatte, und das war die Ursache.

Zunächst wir die ViewStateMac Eigenschaft (enableViewStateMac="false" in der page-Richtlinie) zu lösen, ist es deaktiviert, aber das ist keine echte Lösung für das Problem und können die Datenintegrität gefährden. Wir beschlossen, es letztlich von deaktivierte Schaltfläche unsere einreichen, bis die Seite vollständig geladen war, und Trimmen der Größe unserer Ansichtszustand, indem sie auf einige Steuerelemente zu deaktivieren.

Ich habe die Wurzel dieses Problems in meiner Website gefunden und ich es endlich geschafft zu lösen es. Dies ist keine direkte Antwort auf Ihre Frage, aber ich wollte dieses kleine Stück Information teilen.

In der Vergangenheit habe ich versucht, alles (einschließlich der Lösung von Jeffaxe vorgeschlagen, oben), aber ohne Ergebnis, und ich wollte nicht enableViewStateMac="false" setzen (wie Raelshark oben erwähnt) auf meine Seite, da dies nur das Problem verbirgt.

Was das Problem in meinem Fall verursacht? Das Problem wurde durch die Verwendung des verursacht Intelligencia.UrlRewriter (Version 2.0 RC 1 Build 6) Modul in bestimmten Seiten meiner Website. Ich war mit einem paar SEO-freundlichen Links und verursacht den Viewstate Prüfungsfehler. Als ich „normal“ Links (anstelle der SEO-freundlichen Links) verwenden das Problem verschwunden!

ich reproduziert das Problem ein paar Mal, um sicherzustellen, war es kein Fehlalarm (ich benutze ASP.NET 3.5).

Ich weiß, dass einige von Ihnen nicht das obige Modul verwenden kann, und immer noch diese Fehlermeldung erhalten, was bedeutet, dass die Ursache ist etwas anderes. Zumindest diese Erfahrung teilen könnte hilfreich sein, einige.

Ich habe diesen Fehler, wenn ich auf meiner Seite, ohne ein action-Attribut eine Formular-Tag-Setup hatte, und dann in der Code-behind, änderte ich die Klage der Form Attribut auf „action.aspx“.

Und in JavaScript, legte ich die Form (theForm.submit ();)

ich in meinem Fall denke, es war eine Frage der Sicherheit, und dass Sie nicht ändern können, nachdem es bereits auf der Seite gesetzt worden ...?

Nicht sicher, ob dies jemand helfen würde, aber meine Lösung war der Ausschluss des machineKey in meinem webconfig für meine Cookie übergeben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top