J'ai une page qui a un énorme viewstate (> 300KB). ...Ouais je sais. J'ai réduit cette anomalie à un seul contrôle d'utilisateur, mais j'ai du mal à déterminer exactement ce que le contrôle met là-dedans. J'ai ignoré SavePageStateToPersistenceMedium dans la page, mais ne fonctionne pas bien avec l'objet viewstate transmis. Puis-je passer à une fonction récursive qui imprime tout ce qui est dans l'objet?
J'ai essayé d'utiliser des décodeurs viewstate disponibles gratuitement, mais aucun n'a fonctionné. J'ai toujours des erreurs quand il essaie de désérialiser le viewstate. Je cherche à peu près un extrait de code ici.
Merci,
Mark
Merci pour la suggestion de traceing, esp. la chose trace.axd. Mais cela ne fait que me dire à quel point les contrôles sont gros, il ne me dit pas ce qu'il y a dans le viewstate. Je veux être capable de voir s'il y a des objets que je suis en sérialisation erronée à viewstate.Quel est un bon moyen de déterminer ce qu'il y a dans mon viewstate?
Répondre
J'avais l'habitude d'utiliser trace.axd. Il répertorie chaque requête et vide le contenu de viewstate. Vous devrez activer le traçage dans web.config. Si vous avez beaucoup de demandes, vous devrez mettre à jour la taille du cache à plus de 10.
En ce qui concerne le problème avec les décodeurs viewstate, vous pourriez avoir le viewstate crypté. Cochez cette publication avec des commentaires/liens: http://www.testingreflections.com/node/view/3424.
Mise à jour: essayez de le désactiver complètement sur les pages élément dans le web.config:
<pages ... viewStateEncryptionMode="Never" ... />
Voir la section état d'affichage dans ce document How To: Configure MachineKey in ASP.NET 2.0
J'ai enlevé le paramètre 'machineKey' de mon web.config, mais j'ai toujours "Il y avait une erreur décodant la chaîne ViewState: Les données sérialisées ne sont pas valides. " dans mon décodeur. – MStodd
@MStodd ajouté une mise à jour avec plus d'informations, vérifiez-le pour le supprimer complètement étant crypté. – eglasius
msdn Je voudrais juste ajouter Trace = "true "à la directive page sur votre machine locale. La section de l'arbre de contrôle vous montrera la taille de viewstate de chaque contrôle.
Fritz Onion's ViewState Decoder est ce qu'il vous faut!
Je souhaite que cela fonctionne, mais je reçois toujours "Il y avait une erreur décodant la chaîne ViewState: Les données sérialisées ne sont pas valides." dans mon décodeur. C'est même après avoir supprimé le paramètre 'machineKey' de web.config. – MStodd
Juste essayé v2.2 à cette date, a bien fonctionné! –
Quel type de contrôle est-ce? –
Ce contrôle vous permet de créer des critères de recherche dynamiques pour l'interrogation d'une base de données. (Je ne sais pas si c'était la réponse que vous cherchiez) – MStodd