Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

ViewStateException, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Représente l'exception qui est levée lorsque l'état d'affichage ne peut pas être chargé ni validé. Cette classe ne peut pas être héritée.

Espace de noms : System.Web.UI
Assembly : System.Web (dans 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

Si une exception se produit lorsque la page charge les informations sur l'état d'affichage, la page crée un objet ViewStateException et le passe en tant qu'exception interne dans une exception HttpException. L'exception HttpException est levée à nouveau pour être gérée par l'application.

La classe ViewStateException stocke des informations sur l'exception dans la propriété Message. Si la demande a l'autorisation d'accéder à la propriété ServerVariables, la propriété Message contient alors les valeurs retournées par les propriétés RemoteAddress, RemotePort, UserAgent, PersistedState, Referer et Path ; sinon, la propriété Message contient un message d'erreur d'état d'affichage générique.

Une exception d'état d'affichage peut être le résultat d'une erreur de validation des codes d'authentification de message (MAC, Message Authentication Codes). Si l'attribut page enableViewStateMac a la valeur true, les informations sur l'état d'affichage sont codées avec un identificateur MAC. Lorsque les informations sur l'état d'affichage sont republiées sur le serveur, la page vérifie le codage pour vérifier qu'il n'a pas été modifié par l'utilisateur. Si la page ne peut pas valider le codage MAC sur les informations sur l'état d'affichage, elle lève une exception HttpException avec l'objet ViewStateException en tant qu'exception interne.

Pour que la validation MAC réussisse, les informations sur l'état d'affichage doivent être hachées par la même clé à l'envoi et à la réception. Dans une batterie de serveurs Web, il est recommandé de définir une clé ordinateur commune pour chaque serveur.

L'exemple de code suivant montre comment implémenter une méthode qui désérialise une chaîne codée en base 64 et qui retourne une collection ICollection de paramètres de propriété. La méthode Deserialize peut lever une exception HttpException qui contient un objet ViewStateException en tant qu'exception interne. L'exemple montre comment intercepter une exception HttpException et récupérer les propriétés de l'objet 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

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft