Pb sur upload de fichier en asp.net avec c# [Résolu]

amorosalain 53 Messages postés jeudi 1 janvier 2004Date d'inscription 22 juillet 2008 Dernière intervention - 8 févr. 2005 à 20:51 - Dernière réponse : amorosalain 53 Messages postés jeudi 1 janvier 2004Date d'inscription 22 juillet 2008 Dernière intervention
- 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 :



if (F_file.PostedFile !=
null)
{

try
{
Server.ScriptTimeout = 3600;

int taille = F_file.PostedFile.ContentLength;

string filename = Path.GetFileName(F_file.PostedFile.FileName);

// 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();

}

catch (Exception err)
{

string texte = err.ToString();
LblError.Text = texte;

}
}



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.
Afficher la suite 

Votre réponse

3 réponses

noeldep 4 Messages postés jeudi 11 août 2005Date d'inscription 8 avril 2009 Dernière intervention - 8 avril 2009 à 13:13
+3
Utile
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" />


  </system.web>
</configuration>

j'espere que ma response sera correcte :-)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de noeldep
cs_Nurgle 1648 Messages postés samedi 6 novembre 2004Date d'inscription 28 avril 2011 Dernière intervention - 9 févr. 2005 à 17:44
0
Utile
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 !
Commenter la réponse de cs_Nurgle
amorosalain 53 Messages postés jeudi 1 janvier 2004Date d'inscription 22 juillet 2008 Dernière intervention - 8 avril 2009 à 23:05
0
Utile
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.

++
Commenter la réponse de amorosalain

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.