2009-03-22 5 views
1

J'ai un problème avec une page longue durée. La page ASP.NET prend environ 20 minutes pour être générée et diffusée dans le navigateur.navigateur en attente de serveur indéfiniment

Le serveur termine la réponse avec succès (selon les journaux et la trace Web ASP.NET) et je suppose que l'envoie au navigateur. Cependant, le navigateur ne reçoit jamais la page. Il (IE8 & Firefox 3 à la fois) continue à tourner et tourner (je l'ai laissé tourner pendant plusieurs heures, rien ne se passe).

Ce problème apparaît uniquement sur le serveur hôte partagé. Quand je cours la même application sur la machine de développement ou le serveur interne, tout fonctionne bien.

J'ai essayé le renifleur et le reniflage de paquets et il semble que le serveur n'envoie rien. Il n'envoie même pas de paquets keep-alive. Pourtant, les deux navigateurs que j'ai essayés ne sont pas expirés après une période d'attente prédéfinie (1 heure dans IE je crois, je ne sais pas ce que c'est dans Firefox).

Le dernier serveur de paquets renvoyé est ACK au POST du navigateur.

J'ai essayé ceci de différentes machines clientes, pour m'assurer que ce n'est pas une configuration cassée sur ma machine.

Comment puis-je diagnostiquer ce problème? Pourquoi le délai d'attente du navigateur n'est-il pas atteint, même s'il n'y a pas de paquets persistants?

p.s. le serveur est Windows 2003, donc IIS6. Cela fonctionnait bien sur l'hébergement partagé, mais ils ont changé quelque chose (quand ils ont déménagé dans un nouvel emplacement) et ça a cassé. Essayer de comprendre quoi.

p.p.s. Je sais que je peux changer la conception de la page pour éviter que la page prenne autant de temps pour être servie. Je vais le faire, mais j'aimerais aussi trouver la cause de ce problème. Je voudrais rester concentré sur ce problème et éviter d'autres conceptions possibles pour la page (en utilisant AJAX ou quoi que ce soit d'autre).

Répondre

2

Vérifiez le délai d'attente de connexion du serveur (sur la page de propriétés du site Web).

Une meilleure approche serait d'envoyer la requête, de lancer le calcul sur le serveur et de servir une page avec un temporisateur Javascript qui continue de lui envoyer des requêtes. Après publication, cette page vérifie si le processus du serveur est terminé. Pendant que le processus est en cours, il répond avec un autre minuteur. Une fois terminé, il redirige vers les résultats.

0

Pouvez-vous clarifier comment vous avez résolu ce problème? Il semble que j'ai le même. Je reçois un rapport .docx et les deux navigateurs (IE10 et Fx37) attendent indéfiniment une réponse (continuer à tourner). Mais cela fonctionne très bien dans IIS Express de VS2012 et sur mon hôte local IIS7. Bien que le serveur ait IIS6.1

Et quand cela fonctionne sur localhost, il suffit de quelques minutes pour obtenir un rapport.

+0

Cela ne répond pas vraiment à la question. Si vous avez une question différente, vous pouvez le demander en cliquant sur [Poser une question] (http://stackoverflow.com/questions/ask). Vous pouvez également ajouter une prime pour attirer plus d'attention sur cette question une fois que vous avez assez de réputation. –

+0

C'est la chose, je ne peux pas ajouter de commentaire parce que je n'ai pas assez de réputation, mais j'ai besoin d'un retour sur cette question. Comme le problème du poulet et des œufs. – Sergii

Questions connexes