Esporta (0) Stampa
Espandi tutto

Classe ViewStateException

Nota: questa classe è stata introdotta con .NET Framework versione 2.0.

Rappresenta l'eccezione generata quando lo stato di visualizzazione non può essere caricato o convalidato. Questa classe non può essere ereditata.

Spazio dei nomi: 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

Se si verifica un'eccezione mentre la pagina carica le informazioni sullo stato di visualizzazione, la pagina crea un oggettoViewStateException e lo passa a un'eccezione interna in un'eccezione HttpException. L'eccezione HttpException viene generata nuovamente per essere gestita dall'applicazione.

La classe ViewStateException memorizza le informazioni sull'eccezione nella proprietà Message. Se la richiesta dispone dell'autorizzazione di accesso alla proprietà ServerVariables, la proprietà Message contiene i valori restituiti dalle proprietà RemoteAddress, RemotePort, UserAgent, PersistedState, Referer e Path; in caso contrario, la proprietà Message contiene un messaggio di errore generico dello stato di visualizzazione.

Un'eccezione dello stato di visualizzazione può essere il risultato di un errore di convalida dei codici MAC (Message Authentication Code). Se l'attributo di pagina enableViewStateMac è impostato su true, le informazioni sullo stato di visualizzazione vengono codificate con un identificatore MAC. Quando le informazioni sullo stato di visualizzazione vengono inviate nuovamente al server, la pagina verifica la codifica per controllare che non sia stata modificata dall'utente. Se la pagina non è in grado di convalidare la codifica MAC delle informazioni sullo stato di visualizzazione, viene generata un'eccezione HttpException con l'oggetto ViewStateException come eccezione interna.

Affinché la convalida MAC venga eseguita correttamente, deve essere generato un hash per le informazioni sullo stato di visualizzazione con la stessa chiave quando vengono inviate e ricevute. In una Web farm, la chiave del computer in ogni server deve essere impostata su una chiave comune.

Nell'esempio di codice riportato di seguito viene illustrato come implementare un metodo che deserializza una stringa con codifica Base64 e restituisce un insieme ICollection di impostazioni della proprietà. Il metodo Deserialize può generare un'eccezione HttpException contenente un oggetto ViewStateException come eccezione interna. Nell'esempio viene illustrato come intercettare un'eccezione HttpException e recuperare le proprietà dall'oggetto ViewStateException.

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

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

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 non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft