2009-11-12 2 views
1

Je sais que cette question a été posée plusieurs fois, mais mon problème est un peu différent.Statut des blocs de traitement en arrière-plan ASP.NET ou retour d'information de l'interface utilisateur

J'ai une page qui permet à l'utilisateur de télécharger et de télécharger le fichier Excel. Lors du téléchargement d'Excel, il faut environ 2 minutes pour générer le fichier. J'ai ajouté des points de contrôle qui mettent à jour la base de données avec un statut comme (début du traitement, travail sur l'en-tête ... etc). J'ai fait la même chose pour le téléchargement.

J'ai également une requête ajax qui vérifie la base de données dans un intervalle fixe et imprime l'état à l'utilisateur pour donner des retours comme (début du traitement, travailler sur l'en-tête ... etc).

Le problème est, je reçois les commentaires seulement lorsque le processus est terminé. Il semble que la session soit bloquée pendant le processus d'arrière-plan et que toute autre requête (ajax) ne soit terminée qu'une fois le processus en arrière-plan terminé. ajax fait approximativement 10 demandes dans des intervalles de 4 secondes. Je reçois la réponse 10 seulement à la fin.

J'ai essayé deux iframes et aussi des cadres, l'un exécutant l'ajax et l'autre exécutant le processus, ne fonctionne pas. J'ai essayé le navigateur séparé (processus fonctionnant dans IE, ajax fonctionnant dans FF) et cela fonctionne (ainsi je maintenant mon code fonctionne). Quelqu'un peut-il conseiller? Merci

p.s. Mon environnement est IIS 6, ASP.NET 3.5 avec le navigateur MVC 1.0 est IE6.0

Répondre

1

Votre navigateur a une limitation sur le nombre de connexions pouvant fonctionner simultanément.

Je crois que IE a une limitation de 2 connexions. Cela signifie que même si vous exécutez des requêtes AJAX, vous ne pouvez avoir que deux requêtes simultanées en même temps.

C'est probablement pourquoi vous ne voyez pas de résultats jusqu'à la fin, car il traite d'autres connexions et ne parvient pas à la demande d'état jusqu'à ce que cela soit déjà fait. Cela explique également pourquoi cela fonctionne lorsque vous le faites depuis différents navigateurs, car vous ne souffrez pas de la même limitation de connexion.

Voici un article qui détaille le problème.

+0

Merci pour la réponse, mais je l'ai essayé Firefox aussi, et il a 15 connexions et même ce ne fonctionne pas. – surya

+1

@spiderdevil Les navigateurs ne sont pas les seuls à y mettre une limite. Il est en fait intégré dans les spécifications HTTP 1.0 et 1.1, donc les serveurs peuvent également respecter les spécifications HTTP et leurs limitations, ce qui est 4 connexions simultanées je crois. – Joseph

+0

J'ai vérifié avec un violoneux. et je ne vois que deux connexions, mon processus et ma requête ajax est ajouté en file d'attente toutes les deux secondes. une fois que mon processus est terminé, toutes les réponses ajax reviennent. Comment puis-je résoudre ce problème. – surya

Questions connexes