Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

ViewStateException-Klasse

Aktualisiert: November 2007

Stellt die Ausnahme dar, die ausgelöst wird, wenn der Ansichtszustand nicht geladen oder validiert werden kann. Diese Klasse kann nicht geerbt werden.

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)

[SerializableAttribute]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class ViewStateException : Exception, 
	ISerializable
/** @attribute SerializableAttribute */ 
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public final class ViewStateException extends Exception implements ISerializable
public final class ViewStateException extends Exception implements ISerializable

Wenn eine Ausnahme auftritt, während die Seite die Informationen zum Ansichtszustand lädt, erstellt die Seite ein ViewStateException-Objekt und gibt dieses als innere Ausnahme in einer HttpException-Ausnahme weiter. Die HttpException-Ausnahme wird erneut ausgelöst, um von der Anwendung behandelt zu werden.

Die ViewStateException-Klasse speichert Informationen zur Ausnahme in der Message-Eigenschaft. Wenn die Anforderung über die Berechtigung zum Zugriff auf die ServerVariables-Eigenschaft verfügt, enthält die Message-Eigenschaft die von den Eigenschaften RemoteAddress, RemotePort, UserAgent, PersistedState, Referer und Path zurückgegebenen Werte; andernfalls enthält die Message-Eigenschaft eine generische Fehlermeldung zum Ansichtszustand.

Eine Ansichtszustandsausnahme kann das Ergebnis eines MAC-Validierungsfehlers (Message Authentication Code) sein. Wenn das Seitenattribut enableViewStateMac auf true festgelegt ist, werden Informationen zum Ansichtszustand mit einem MAC-Bezeichner codiert. Wenn die Informationen zum Ansichtszustand an den Server zurückgesendet werden, überprüft die Seite die Codierung, um sicherzustellen, dass diese nicht durch Benutzer geändert wurde. Wenn die Seite die MAC-Codierung nicht für die Informationen zum Ansichtszustand überprüfen kann, löst sie eine HttpException-Ausnahme mit dem ViewStateException-Objekt als innere Ausnahme aus.

Damit die MAC-Validierung erfolgreich ausgeführt werden kann, muss für die Informationen zum Ansichtszustand beim Senden und Empfangen ein Hashvorgang mit demselben Schlüssel durchgeführt werden. Innerhalb einer Webfarm sollte der Computerschlüssel auf jedem Server auf einen allgemeinen Schlüssel festgelegt werden.

Im folgenden Codebeispiel wird veranschaulicht, wie eine Methode implementiert wird, die eine Base64-codierte Zeichenfolge deserialisiert und eine ICollection-Auflistung von Eigenschafteneinstellungen zurückgibt. Die Deserialize-Methode kann eine HttpException-Ausnahme auslösen, die ein ViewStateException-Objekt als innere Ausnahme enthält. Im Beispiel wird gezeigt, wie Sie eine HttpException-Ausnahme abfangen und die Eigenschaften des ViewStateException-Objekts abrufen können.

private ICollection LoadControlProperties(string serializedProperties)
{

    ICollection controlProperties = null;

    // Create an ObjectStateFormatter to deserialize the properties.
    ObjectStateFormatter formatter = new ObjectStateFormatter();

    try
    {
        // Call the Deserialize method.
        controlProperties = (ArrayList)formatter.Deserialize(serializedProperties);
    }
    catch (HttpException e)
    {
        ViewStateException vse = (ViewStateException)e.InnerException;
        String logMessage;

        logMessage = "ViewStateException. Path: " + vse.Path + Environment.NewLine;
        logMessage += "PersistedState: " + vse.PersistedState + Environment.NewLine;
        logMessage += "Referer: " + vse.Referer + Environment.NewLine;
        logMessage += "UserAgent: " + vse.UserAgent + Environment.NewLine;

        LogEvent(logMessage);

        if (vse.IsConnected)
        {
            HttpContext.Current.Response.Redirect("ErrorPage.aspx");
        }
        else
        {
            throw e;
        }
    }
    return controlProperties;
}


  • AspNetHostingPermission 

    für den Betrieb in einer Hostumgebung. Anforderungswert: LinkDemand, Berechtigungswert: Minimal

System.Object
  System.Exception
    System.Web.UI.ViewStateException

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Anzeigen: