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

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



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

Meilleure réponse
Messages postés
4
Date d'inscription
jeudi 11 août 2005
Dernière intervention
8 avril 2009
8 avril 2009 à 13:13
3
Merci
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 :-)

Merci noeldep 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de noeldep
Messages postés
1648
Date d'inscription
samedi 6 novembre 2004
Dernière intervention
28 avril 2011
9 févr. 2005 à 17:44
0
Merci
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
Messages postés
53
Date d'inscription
jeudi 1 janvier 2004
Dernière intervention
22 juillet 2008
8 avril 2009 à 23:05
0
Merci
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.