Les Exceptions ne se produit pas par hasard" de temps à autre. Ils se présentent toujours pour des raisons valables, certains sont déjà répertoriés dans les autres réponses.
Toutefois, afin d'atténuer les problèmes avec ViewState envisagez de le désactiver complètement. Comme ASP.NET les développeurs nous ont souvent tendance à utiliser ViewState dans toutes sortes d'endroits où il n'est pas nécessaire, parce que sa valeur par défaut. J'ai l'habitude de penser à l'aide de html statique avant je considère que l'utilisation d'un contrôle. Si vous décidez de l'utiliser un contrôle de penser si il a vraiment besoin d'ViewState être activé. La désactivation souvent conduire à de meilleurs temps de chargement de page, si vous le pouvez, faire.
Je voudrais qu'il soit désactivé par défaut, de sorte que les gens ont été forcés de penser de cette façon, mais il ne l'est pas.
Mise à jour pour répondre à un commentaire:
Du haut de ma tête j'arrive avec 3 possibilités pour désactiver le ViewState.
Désactiver le ViewState si les données sont chargées sur chaque publication. Ce sera souvent le cas si vous êtes la construction d'AJAX sites (c'est vrai AJAX pas que UpdatePanel genre ;) ), où vous généralement de charger des données sur la première charge puis recharger/mise à jour des données à l'aide de requêtes AJAX. Dans certains cas, vous pouvez même charger des données à chaque visite dans le seul but de la désactivation de l'état d'affichage, et puis mettre en cache les données sur le serveur à la place.
Vous pouvez également envisager la désactivation de l'état d'affichage si vous databind le contenu qui est vraiment statique. Parfois, je trouve une liste qui est lié aux données à un petit statique basedata table dans la base de données ou quelque chose comme ça. Maintenant, cela peut être dangereux, mais si je suis convaincu que les données ne changeront pas je pourrais déplacer les données dans la page de contenu statique (vous pouvez l'envelopper dans un contrôle distinct de sorte que vous n'aurez pas plusieurs statique des copies des données). Mais si les données sont ensuite FAIRE le changement, vous devrez modifier manuellement.
Des commandes simples, tels que les Étiquettes sont souvent de bons candidats pour la désactivation de l'état d'affichage.
Enfin, vous pouvez passer à ASP.NET framework MVC et vague au revoir à ces problèmes pour toujours, c'est ce que je prévois de faire, même si je ferai face à d'autres problèmes. ;)