2008-11-09 7 views
1

Mon application ASP.NET permet aux utilisateurs de télécharger et de télécharger des fichiers volumineux. Les deux procédures impliquent la lecture et l'écriture de flux de fichiers. Que dois-je faire pour m'assurer que l'application ne se bloque pas ou ne plante pas lorsqu'elle gère un gros fichier? Les opérations de fichiers doivent-elles être gérées sur un thread de travail par exemple?Lors de la gestion de transferts de fichiers volumineux dans ASP.NET, quelles précautions devez-vous prendre?

Répondre

1

Assurez-vous de tamponner correctement les fichiers afin qu'ils ne prennent pas une quantité excessive de mémoire dans le système.

par exemple. extrait d'une application de téléchargement, dans la boucle while qui lit le fichier:

// Read the data in buffer. 
length = iStream.Read(buffer, 0, bufferSize); 

// Write the data to the current output stream. 
Response.OutputStream.Write(buffer, 0, length); 

Où bufferSize est quelque chose de raisonnable, par exemple 100000 octets, le compromis est qu'il sera plus lent pour les petites tailles de tampon.

http://support.microsoft.com/kb/812406

Edit: Assurez-vous également que IIS est configuré pour prendre un assez grand request length (IIS7) et délai d'attente.

0

À moins que ce soit l'objectif principal de votre site, envisagez de partitionner ces opérations en une application distincte, par ex. une sous-application ou un sous-domaine. En plus de réduire les risques, cela simplifierait également la mise à l'échelle au fur et à mesure que votre base d'utilisateurs se développerait.

Questions connexes