2 votes

ASP.NET MVC obtient l'erreur 504 après 10 minutes de téléchargement de fichier

J'ai une application Web ASP.NET MVC2, qui fonctionne avec SQL Server 2008 R2 et IIS 6.2. J'ai une fonctionnalité où un administrateur particulier doit télécharger environ 5000 documents, qui doivent ensuite être traités et stockés dans le serveur, tandis que leurs noms sont enregistrés dans une base de données.

Le problème est que, du côté client, 10 minutes après le début du téléchargement du fichier, j'obtiens : Error 504 Timeout, Gateway Timeout. J'ai modifié la valeur httpRuntime.ExecutionTimeout dans le web.config mais cela n'a pas résolu le problème.

Quelqu'un sait-il où est stockée la valeur qui me limite ?

Voici mon fichier web.config : http://pastebin.com/VXs0BFTp

EDIT : De plus, après la réception de l'erreur 504, le stockage des données dans la base de données se poursuit quand même.

0voto

Alexei Points 182

D'après votre description, il semble que les délais de connexion client -> serveur Web soient très probablement liés à l'utilisation d'un proxy. Si votre serveur traite les fichiers en plus de 10 minutes, votre client ne reçoit pas de réponse en temps voulu, mais le serveur Web peut poursuivre le traitement.

httpRuntime.ExecutionTimeout (délai d'exécution) spécifie combien de temps un thread IIS est autorisé à traiter une requête avant d'être arrêté, donc il ne devrait pas avoir d'influence pour votre problème.

Si vous ne pouvez pas optimiser le traitement côté serveur pour les fichiers, je vous suggère de revoir la conception. Une solution possible consiste à télécharger tous les fichiers, à répondre au client dès que possible et à effectuer le traitement de manière asynchrone. Bien sûr, l'interface client doit être modifiée pour pouvoir afficher l'état du traitement (par exemple en pourcentage).

Si le processus de téléchargement prend trop de temps (c'est-à-dire plusieurs minutes), une solution pourrait être de demander à l'administrateur de transférer les fichiers vers un emplacement réseau et de lancer le traitement après cela (le serveur Web doit avoir les droits de lecture à partir de cet emplacement). Ce n'est pas très convivial, mais les administrateurs ne sont pas des utilisateurs réguliers.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X