2009-09-08 6 views
0

J'ai une page ASP.NET qui contient trois DIV, dont chacune est initialement affichée via une page partielle - cela fonctionne bien.La mise à jour de DIV multiples via AJAX est incohérente

Chaque DIV contient une grille d'entrées qui peuvent être parcourues ou triées par une colonne particulière. Ces mises à jour sont effectuées via des requêtes AJAX et cela fonctionne également très bien.

Mon problème se produit lors de l'exécution de l'interaction principale avec la page, qui associe des éléments d'une liste avec des éléments d'une autre. Le premier DIV contient une liste de vols, le deuxième DIV contient une liste de personnes associées à un vol (avec une référence à quel vol) et le troisième DIV contient une liste de personnes qui ne sont associées à aucun vol. . En utilisant divers éléments ui, je peux effectuer des opérations telles que ...

  1. Ajouter un vol
  2. Assigner une personne à un vol
  3. Retirez une personne d'un vol
  4. Déplacer une personne à autre vol
  5. Supprimer un vol

Chacune de ces opérations a un effet variable sur une ou plusieurs des listes ainsi, sur com Je fais simplement appel aux requêtes AJAX nécessaires pour mettre à jour chacune des DIVs. Parfois, un ou plusieurs des DIV ne se mettent pas à jour, d'autres fois le navigateur tourne à jamais et (même si je peux naviguer vers d'autres pages) se bloque s'il rencontre une autre requête AJAX. Cette séquence d'appels se fait l'une après l'autre, sans mécanisme pour attendre que le précédent se termine avant de passer au suivant, donc je pense qu'il y a une sorte de file d'attente/blocage qui se passe. Après avoir étudié d'autres sujets sur SO, j'ai trouvé des références aux problèmes provoqués par les requêtes AJAX traitées dans le désordre, mais je suis à peu près sûr que cela ne s'applique pas dans ce cas car, en général, peu importe quel ordre le Les DIV sont mis à jour. Je suis conscient que les navigateurs ont une limite au nombre de requêtes XMLHttpRequests simultanées qui peuvent être actives à la fois, mais je pensais que les requêtes seraient mises en file d'attente jusqu'à ce que les requêtes précédentes soient terminées.

Est-ce que quelqu'un d'autre a rencontré des problèmes similaires?

EDIT:

J'ai suivi la situation avec Fiddler et, lorsque le problème se produit, certaines des demandes tout simplement ne se présentent pas dans la fenêtre des sessions.

+0

Ceci est le framework mvc dans asp.net? – AnthonyWJones

+0

Oui, c'est certainement le cas. – belugabob

Répondre

2

Si les sessions n'apparaissent pas dans Fiddler, cela signifie que la requête HTTP n'a jamais été effectuée. Si le navigateur tourne sans progression, cela suggère l'épuisement du pool de connexions HTTP.

Cela se produit-il uniquement avec un navigateur particulier? Si IE6 ou 7, le problème se produit-il après avoir exécuté fixHTTPMax.reg et redémarré?

+0

Hmmm, idée intéressante. Malheureusement, cela semble improbable, car je ne fais que 3 requêtes en même temps, alors que le correctif que vous avez fourni est apparemment de dépasser la valeur par défaut de XP SP2 de 10 connexions simultanées.Je ne suis pas sûr non plus sur les aspects pratiques de l'obtention de tous les utilisateurs (même mon petit nombre d'utilisateurs) pour modifier les paramètres de leur navigateur. De plus, à la manière des bugs intermittents, cela ne semble pas se produire ce matin, donc je devrai reporter une réponse définitive à plus tard. En attendant, je vais vous attribuer 10 points QI (ou un upvote si vous n'êtes pas du Royaume-Uni) pour être intéressant. – belugabob

+0

Oh, je ne suggère pas que vous devriez amener vos utilisateurs à changer leur limite de connexion, j'essaie simplement de déterminer s'il s'agit d'un problème de pool de connexion HTTP. (Incidemment, la limite "en attente d'ouverture" de TCP/IP à laquelle vous faites référence n'a rien à voir avec la limite de connexion active HTTP). – EricLaw

+0

Ok, point pris - étudiera plus loin. – belugabob

Questions connexes