2010-12-09 21 views
0

Ce qui se passe dans plusieurs versions de Safari, y compris 5.xchamp viewstate complètement dans Safari manquant

Il affichera _ eventtarget = & _EVENTARGUMENT = mais rien pour __VIEWSTATE =

C'est que passe dans Safari, et seulement sur une page de notre site.

Je ne peux pas le reproduire - nous avons passé des jours à essayer de le faire.

Le viewstate n'est pas trop grand sur cette page.

Merci!

Répondre

1

Nous avons rencontré beaucoup de problèmes avec viewstate avec la version 3. Safari définit des limites à la quantité de données pouvant apparaître dans un champ renvoyé au serveur.

La façon dont nous avons résolu nos problèmes consistait à définir viewstate pour couvrir plusieurs contrôles d'entrée. Vous pouvez le faire dans la section system.web/pages du fichier web.config. Par exemple:

<system.web> 
    <pages maxPageSTateFieldLength="500" /> 
</system.web> 

Vous devrez peut-être jouer avec la valeur. Je ne me souviens pas quelles sont les limites pour les différentes versions de safari. Quelques personnes ont dit 1k, mais si je me souviens bien de nos tests, certaines versions ne dépassaient que 500 octets.

Une autre option consiste à stocker le côté serveur viewstate. Vous pouvez voir un exemple de this here. Vous devriez également lire this blog sur les problèmes potentiels. Nous avons essayé ce chemin et finalement l'avons abandonné car il était en conflit avec d'autres choses de chiffrement que nous faisions.

+0

: Facepalm: J'espère vraiment que la limitation dans Safari est pour une bonne raison, parce qu'elle semble vraiment stupide à première vue. – Greg

+0

Dans ce cas, étiez-vous en train de voir le champ qui n'était pas affiché du tout? – ChickenMilkBomb

+0

@NickAtuShip: Oui. Viewstate était vide. Ce qui était pire, c'est que nous avons eu beaucoup de mal à le reproduire. Il y avait beaucoup de révisions au safari, en particulier la branche 3.x qui a modifié ce paramètre. – NotMe

0

(prendre un tact différent de réponse précédente)

Pour résumer ce que nous savons jusqu'ici:

  1. seulement safari
  2. seule une page particulière
  3. il y a un dispositif appelé Strangeloop dans le mix qui supprime viewstate à la sortie et le remet en place quand la page est postée. Il le fait à travers un certain type de valeur symbolique.

Quelques questions: D'abord, est-ce limité à un client particulier ou à un groupe de personnes? Je demande car il pourrait être important que c'est "seulement" safari.

Deuxièmement, est-ce que le périphérique StrangeLoop a un certain type de valeur de délai d'attente ou de limite de trafic dans lequel le cache de jetons est collecté par la corbeille?

Je peux envisager un scénario où un client particulier va à cette page et reste assis pendant un certain temps (10 minutes .. plus?). En attendant, une valeur de timeout est atteinte ou la quantité de trafic que vous avez oblige le périphérique strangeloop à lancer viewstate pour ce client particulier. Ensuite, quand ils vont de l'avant et de poster l'appareil n'a pas de viewstate à réinjecter dans le flux html.

Il me semble que pour ne pas avoir d'état de vue, l'appareil lui-même ne doit pas l'injecter.La seule raison pour laquelle je peux arriver à cela est que la valeur du jeton n'a pas été envoyée par safari (ce qui est peu probable car il doit être assez petit) ou que le périphérique ne trouve pas de correspondance dans sa table de cache.

L'appareil dispose-t-il d'une sorte de consignation ou de métriques dans lesquelles vous pouvez voir s'il ne peut pas correspondre à une valeur de jeton entrante?

Une idée similaire est si cette page a quelque ajax en cours. L'appareil renvoie-t-il un jeton différent pour chaque requête ou un seul navigateur client conserve-t-il le jeton pour toute la session de navigation? S'il envoie un jeton différent, il se peut que le safari ne se mette pas correctement à jour côté client avec la nouvelle valeur de jeton. Bien que ce chemin devrait être assez facile à reproduire.

+0

merci encore pour la réponse - je vais à la porte, mais je vais jeter un coup d'oeil plus tard ce soir. – ChickenMilkBomb