Question

L'un des sites que je gère repose fortement sur l'utilisation de ViewState (ce n'est pas mon code).Cependant, sur certaines pages où le ViewState est extra-ballonné, Safari lance un "Validation of viewstate MAC failed" erreur.

Cela semble se produire uniquement dans Safari.Firefox, IE et Opera se chargent tous avec succès dans le même scénario.

Était-ce utile?

La solution 3

J'ai fait quelques recherches à ce sujet et même si je ne suis pas entièrement sûr que ce soit la cause, je pense que c'est parce que Safari ne renvoie pas l'ensemble de résultats complet (donc le recadre).

J'ai été en discussion avec un autre développeur et j'ai également trouvé le message suivant sur Channel 9 qui recommande d'utiliser le service SQL State pour stocker l'état d'affichage en évitant le problème de publication ainsi que la taille de la page.

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

Cela vous semble-t-il la meilleure solution ?

Autres conseils

Bien que j'appuie la solution de Channel 9, sachez également que dans certains environnements hébergés, Safari n'est pas considéré comme un navigateur de niveau supérieur.Vous devrez peut-être l'ajouter au navigateur de votre application afin d'utiliser certaines fonctionnalités d'ASP.Net.

C'était la cause première de certains maux de tête que nous avons rencontrés pour le site d'un client qui utilisait le contrôle Menu ASP.

Ma première escale serait de parcourir les éléments de la page et de voir quels contrôles :

  1. Fonctionnera toujours lorsque je désactiverai ViewState
  2. Peut être déplacé hors de la page et dans un appel AJAX pour être chargé si nécessaire

À défaut, et voici l'avertissement - je n'ai jamais utilisé cette solution sur un site Web - mais dans le passé, lorsque je voulais éliminer des ViewStates massifs dans des applications à audience limitée, j'ai stocké le ViewState dans la session.

Cela a fonctionné pour moi car l'impact sur la mémoire n'est pas significatif pour le nombre d'utilisateurs, mais si vous exploitez un site assez populaire, je ne recommanderais pas cette approche.Cependant, si la solution Session fonctionne pour Safari, vous pouvez toujours détecter l'agent utilisateur et le truquer de manière appropriée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top