c# - ViewState nur in Safari ungültig

Translate

Eine der Websites, die ich pflege, hängt stark von der Verwendung von abViewState(Es ist nicht mein Code). Auf bestimmten Seiten, auf denen dieViewStateist extra aufgebläht, wirft Safari a"Validation of viewstate MAC failed"Error.

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

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Beachten Sie auch, dass Safari in einigen gehosteten Umgebungen kein Browser der höheren Stufe ist, während ich die Channel 9-Lösung unterstütze. Möglicherweise müssen Sie es dem Browscap Ihrer Anwendung hinzufügen, um einige ASP.Net-Funktionen nutzen zu können.

Dies war die Hauptursache für einige Kopfschmerzen, die wir bei einem Kunden hatten, der das ASP-Menü-Steuerelement verwendete.

Quelle
Translate

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

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

Gelingt dies nicht, und hier ist der Haftungsausschluss - ich habe diese Lösung noch nie auf einer Website mit Blick auf das Internet verwendet -, aber in der Vergangenheit, in der ich massive ViewStates in Anwendungen mit begrenzter Zielgruppe eliminieren wollte, habe ich den ViewState in der Sitzung gespeichert.

Es hat bei mir funktioniert, weil der Speicherausfall für die Anzahl der Benutzer nicht signifikant ist. Wenn Sie jedoch eine recht beliebte Website betreiben, würde ich diesen Ansatz nicht empfehlen. Wenn die Sitzungslösung jedoch für Safari funktioniert, können Sie den Benutzeragenten jederzeit erkennen und entsprechend fummeln.

Quelle
Translate

Ich habe ein wenig nachgeforscht und obwohl ich nicht ganz sicher bin, ob dies der Grund ist, glaube ich, dass Safari nicht die vollständige Ergebnismenge zurückgibt (und sie daher beschneidet).

Ich habe mit einem anderen Entwickler diskutiert und auch den folgenden Beitrag auf Kanal 9 gefunden, in dem empfohlen wird, den SQL State-Dienst zum Speichern des Ansichtsstatus zu verwenden, um 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?

Quelle