amorosalain
Messages postés52Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention22 juillet 2008
-
8 févr. 2005 à 20:51
amorosalain
Messages postés52Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention22 juillet 2008
-
8 avril 2009 à 23:05
SAM
Pour des clients qui veulent transférer des fichiers de grosses taille sur le serveur, j'ai mis en place un service de ftp via un site web. Pour cela, j'utilise un form contenant une balise
Voici une partie du code (de la fonction appelée par l'évenement du click sur le bouton envoyer) qui effectue l'upload :
// enregistrement du fichier sur le serveur
string path = Server.MapPath("./ftp/"+filename);
FileStream fichier =
new FileStream(path,FileMode.Create,FileAccess.Write);
Stream infile = F_file.PostedFile.InputStream;
byte[] b =
new
byte[500];
int nbcar = 0;
while ((nbcar = infile.Read(b,0,500))!=0)
{
fichier.Write(b,0,nbcar);
}
fichier.Close();
infile.Close();
L'upload fonctionne très bien pour de petit fichier mais, j'obtiens une HttpException "Délai d'attente de la demande dépassé" sur des fichiers de plus de 2Mo (environ). En local, (exécution sur mon pc), sur 3Mo, ca passe car la sauvegarde est rapide, mais sur de très gros fichiers, 20Mo par exemple, le code ne passe même pas le test "if (F_file.PostedFile != null) " et il me dit qu'il ne trouve pas la page demandée (???).
Si quelqu'un a déjà eu des problèmes sur l'upload de gros fichiers et sait comment les résoudre... je suis preneur.
Merci.
PS : à noter que l'exception "Délai d'attente..." n'a apparement rien à voir avec le temps d'exécution coté serveur (limité à 90s coté administration IIS) car je le modifie avec Server.ScriptTimeout = 3600 (1 heure) et que cette dernière instruction fonctionne très bien sur d'autre page.
noeldep
Messages postés4Date d'inscriptionjeudi 11 août 2005StatutMembreDernière intervention 8 avril 2009 8 avril 2009 à 13:13
bonjour
Il y a deux parametres a prendre en compte:
1-) pour le time out:
dans iis il y a le parametrage de asp.net (du site publier concerné) tu fait edit configuration
tu vas dans l'onglet application et la tu as un delai de time out request (un fichier envoyer est sous forme de request) met la valeur en second que tu veux, ca limitera le temps de transfert max mais pas la taille du fichier
2-)pour la taille du fichier:
dans le fichier web.config de ton serveur iis il faut mettre (entre les balise configuration et system ) ce qu'il y a en italique:
<configuration .........>
<system.web>
<!--
<httpRuntime maxRequestLength="10240"/> (<= pour 10Mo)
La valeur doit être comprise dans la plage 0-2097151
-->
<httpRuntime executionTimeout="3600" maxRequestLength="2097151" />
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 9 févr. 2005 à 17:44
Salut :
Ton problème est peut être dû au navigateur web du client qui veut tranférer le fichier. Pour le navigateur, l'upload n'est rien d'autre que l'affichage d'une page...et quand la page met vraiment beaucoup de temps à s'afficher (pour envoyer 20Mo par exemple)
, il abandonne de lui-même le chargement, ce qui donne : "Impossible de trouver la page demandée..." et tout le reste.
La solution la plus efficace est de tronquer les fichiers à uploader en plus petits, ce qui est un peu chiant pour le client...
Une autre solution est d'installer un petit programme côté client pour faire l'upload, ou même un ActiveX...
à+
Nurgle C'est une grande folie que de vouloir être sage tout seul !
amorosalain
Messages postés52Date d'inscriptionjeudi 1 janvier 2004StatutMembreDernière intervention22 juillet 2008 8 avril 2009 à 23:05
SAM
Bonjour,
Oui la réponse est correcte. J'avais publié ce problème il y a qq années maintenant (d'ailleurs j'avais complètement oublié que j'avais un pb en cours sur codes sources). Depuis, j'avais trouvé le paramètre à renseigner dans le web.config.
Mais merci pour la réponse car elle pourra profiter à qq d'autres.