2009-02-22 9 views
2

Je reçois cette erreur de temps en temps lorsque j'interagis avec une application Web que j'ai créée. L'application utilise Ajax pour communiquer avec un serveur, mais ne fait rien de fantaisie spécifique à IE. Je ne reçois pas cette erreur ou toute autre erreur lors de l'exécution de la même application sur Firefox ou Safari.IE 7 erreur: "Un appel sortant ne peut pas être effectué puisque l'application envoie un appel synchrone en entrée"

Avez-vous déjà vu ce message d'erreur, savez-vous ce qui peut l'expliquer ou avez une recommandation à faire sur ce problème?

Répondre

3

Il s'agit d'une erreur COM générique. Qu'est-ce qui se passe est que le composant AJAX, XmlHttpRequest est un objet COM, et donc suivre les règles pour COM. Ce qui se passe probablement ici est que XmlHttpRequest envoie un événement entrant. Dans la réponse à cet événement, il y a probablement du code qui appelle un objet COM différent dans un autre appartement, ce qui entraînera finalement un blocage. COM détecte cela et empêche cela.

La recommandation générale est de casser ce type d'application en utilisant des files d'attente. Au lieu de répondre immédiatement aux événements, enregistrez l'événement dans une file d'attente et revenez immédiatement. Traitez ensuite les événements de manière asynchrone à l'aide d'une minuterie.

+0

Donc, vous dites que lorsque l'objet XmlHttpRequest appelle ma fonction JavaScript de rappel, je ne devrais pas exécuter de code tout de suite mais l'exécuter un peu plus tard avec un window.setTimeout()? – avernet

+0

Oui, c'est ce que je suggère. –

+0

Très bien. J'ai essayé de faire cela (c'est-à-dire de ne pas lancer le JS tout de suite quand la réponse Ajax arrive, mais d'utiliser setTimeout() pour l'exécuter un peu plus tard), mais cela n'aide malheureusement pas. – avernet

Questions connexes