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

ViewStateException-Klasse

Hinweis: Diese Klasse ist neu in .NET Framework, Version 2.0.

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] 
public sealed class ViewStateException : Exception, ISerializable
/** @attribute SerializableAttribute() */ 
public final class ViewStateException extends Exception implements ISerializable
SerializableAttribute 
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 innerere 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;
}

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

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

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0
Anzeigen: