Frage

Eine der von mir verwalteten Websites ist stark auf die Verwendung von angewiesen ViewState (es ist nicht mein Code).Auf bestimmten Seiten, auf denen die ViewState ist extra aufgebläht, Safari wirft ein "Validation of viewstate MAC failed" Fehler.

Dies scheint nur in Safari zu passieren.Firefox, IE und Opera werden alle im selben Szenario erfolgreich geladen.

War es hilfreich?

Lösung 3

Ich habe ein wenig darüber recherchiert, und obwohl ich mir nicht ganz sicher bin, ob es daran liegt, glaube ich, dass es daran liegt, dass Safari nicht den vollständigen Ergebnissatz zurückgibt (und ihn daher beschneidet).

Ich habe mit einem anderen Entwickler diskutiert und auch auf Channel 9 den folgenden Beitrag gefunden, in dem empfohlen wird, den SQL State-Dienst zum Speichern des Ansichtszustands zu verwenden und so das Postback-Problem und auch die Seitengröße zu vermeiden.

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

Scheint dies die beste Lösung zu sein?

Andere Tipps

Obwohl ich die Lösung von Channel 9 unterstütze, sollten Sie sich auch darüber im Klaren sein, dass Safari in einigen gehosteten Umgebungen nicht als Browser der höheren Ebene gilt.Möglicherweise müssen Sie es zum Browser Ihrer Anwendung hinzufügen, um einige ASP.Net-Funktionen nutzen zu können.

Das war die Hauptursache für einige Probleme, die wir bei der Website eines Kunden hatten, der das ASP-Menü-Steuerelement verwendete.

Meine erste Anlaufstelle wäre, die Elemente auf der Seite durchzugehen und zu sehen, welche Steuerelemente:

  1. Funktioniert weiterhin, wenn ich ViewState ausschalte
  2. Kann aus der Seite in einen AJAX-Aufruf verschoben werden, um bei Bedarf geladen zu werden

Gelingt das nicht, und hier ist der Haftungsausschluss: Ich habe diese Lösung noch nie auf einer webbasierten Website verwendet – aber in der Vergangenheit, wo ich massive ViewStates in Anwendungen mit begrenzter Zielgruppe beseitigen wollte, habe ich den ViewState in der Sitzung gespeichert.

Bei mir hat es funktioniert, weil die Belastung des Speichers für die Anzahl der Benutzer nicht von Bedeutung ist. Wenn Sie jedoch eine ziemlich beliebte Website betreiben, würde ich diesen Ansatz nicht empfehlen.Wenn die Sitzungslösung jedoch für Safari funktioniert, können Sie den Benutzeragenten immer erkennen und entsprechend fummeln.

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