c# - ViewState non valide uniquement dans Safari

Translate

L'un des sites que je gère repose fortement sur l'utilisation deViewState(ce n'est pas mon code). Cependant, sur certaines pages où leViewStateest très gonflé, Safari jette un"Validation of viewstate MAC failed"Erreur.

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

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Bien que j'appuie la solution 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 de pouvoir utiliser certaines fonctionnalités ASP.Net.

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

La source
Translate

Mon premier port d'escale serait de parcourir les éléments de la page et de voir quels contrôles:

  1. Fonctionne toujours lorsque je désactive 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 la clause de non-responsabilité - je n'ai jamais utilisé cette solution sur un site Web - mais dans le passé, où je voulais éliminer des ViewStates massifs dans des applications à public limité, j'ai stocké le ViewState dans la session.

Cela a fonctionné pour moi parce que le coup en mémoire n'est pas significatif pour le nombre d'utilisateurs, mais si vous utilisez 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 fudge de manière appropriée.

La source
Translate

J'ai fait un peu de recherche à ce sujet et bien que je ne sois pas tout à fait 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 recadrage).

J'ai discuté avec un autre développeur et j'ai également trouvé le post 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 et 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?

La source