Ausnahmen "passieren" nicht von Zeit zu Zeit. Sie kommen immer aus berechtigten Gründen vor, von denen einige bereits in den anderen Antworten aufgeführt sind.
Um Probleme mit ViewState zu beheben, sollten Sie es jedoch insgesamt deaktivieren. Als ASP.NET-Entwickler neigen wir oft dazu, ViewState überall dort zu verwenden, wo es nicht benötigt wird, weil es der Standard ist.Normalerweise denke ich über die Verwendung von statischem HTML nach, bevor ich ein Steuerelement in Betracht ziehe. Wenn Sie sich dafür entscheiden, ein Steuerelement zu verwenden, überlegen Sie, ob ViewState tatsächlich aktiviert werden muss. Die Deaktivierung führt oft zu besseren Seitenladezeiten. Wenn Sie können, sollten Sie es tun.
Ich wünschte, es wäre standardmäßig deaktiviert, so dass die Menschen gezwungen waren, auf diese Weise zu denken, aber es ist nicht.
aktualisieren Kommentar zu beantworten:
Von der Spitze von meinem Kopf, den ich mit 3 Möglichkeiten kommen Viewstate auszuschalten.
Deaktivieren Sie ViewState, wenn Daten auf jedem Postback geladen werden. Dies ist häufig der Fall, wenn Sie AJAX-fähige Sites erstellen (das ist real AJAX nicht diese UpdatePanel Art;)), wo Sie normalerweise Daten beim ersten Laden laden und dann Daten mit AJAX-Anforderungen neu laden/aktualisieren. In einigen Fällen können Sie sogar Daten bei jedem Besuch laden, um ViewState zu deaktivieren und stattdessen die Daten auf dem Server zwischenzuspeichern.
Sie können ViewState auch deaktivieren, wenn Sie auf Inhalte zugreifen, die wirklich statisch sind. Manchmal finde ich eine Liste, die mit einer kleinen statischen Basistabelle in der Datenbank verbunden ist oder so ähnlich. Nun kann dies gefährlich sein, aber wenn ich davon überzeugt bin, dass die Daten werden nicht ändern könnte ich die Daten in die Seite als statische Inhalte bewegen (Sie können es in einem separaten Steuer wickeln konnte, so dass Sie nicht mehrere statische Kopien der Daten haben). Wenn sich die Daten dann ändern, müssen Sie sie manuell ändern.
Einfache Steuerelemente wie Labels sind oft gute Kandidaten zum Deaktivieren von ViewState.
Schließlich könnten Sie zu ASP.NET MVC-Framework wechseln und auf Wiedersehen für immer auf diese Probleme Welle, das ist, was ich plane zu tun, auch wenn ich einige andere Probleme konfrontiert sein wird. ;)
Können Sie mehr Details über Artikel? –
Gut Viewstate enthält eine Signatur, um zu verhindern, dass jemand es auf der Clientseite bearbeitet. Diese Signatur wird vom Maschinenschlüssel für den Server generiert. Wenn Sie nicht speziell einen Maschinenschlüssel festlegen, wird dieser beim Neustart des Anwendungspools neu generiert, wodurch alle vorherigen Anzeigestatus ungültig werden. Wenn Sie über eine Benutzerauthentifizierung verfügen, sollten Sie auch einen ViewStateUserKey zum Schutz vor CSRF einrichten. – blowdart