Httphandler - taille limitée

Signaler
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011
-
scottmat
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011
-
Bonjour à tous,

Voila j'ai testé les httphandler (ashx) pour le téléchargement de fichier et je me rends compte que sa marche pour des fichiers qui font 1-2 Mo et non pour 50 Mo
La taille serait-elle limitée ?
Si quelqu'un à des infos sur le sujet ;)

Merci par avance

12 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
25
Salut,

La limitation est plus du à la configuration de IIS.

cf http://www.banmanpro.com/support2/File_Upload_limits.asp pour augmenter la taille

Il faut changer le parametre
AspMaxRequestEntityAllowed dans le fichier C:\windows\sytem32\inetserv\metabase.xml

bon dev
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Bonsoir,

nhervagault, je suis pas sur que ce paramètre bride l'upload de ASP.net, il s'agit plutot du paramètre <httpruntime maxrequestlength="" /> à définir au niveau du web.config de l'application.

Par contre, j'ai l'impression ici que le problème survient lors de l'envoie depuis ASP.net vers le navigateur. Dans ce cas je ne connais pas de limitation lié à IIS.

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Merci pour vos réponses,

je ne connais pas toutes les options dans IIS alors j'ai fait plein de test, en restaurant les modifications que j'ai faites. Bref, sa ne change rien.

nhervagault => j'ai quand même testé, mais bon la valeur par default est de 204800, et j'arrive à télécharger des fichiers de plusieurs Mo

tit question, si on est bien sur le même sujet : on parle bien de DownLoad et non de UpLoad (avec l'élément FileUpLoad) ?

je pense pas voyant ensuite la phrase de jesusonline "le problème survient lors de l'envoie depuis ASP.net vers le navigateur", je préfére demande pour être sur :)

en faisant des recherche sur google (ex: "httphandler size limit") on tombe directement sur des sujets sur FileUpload. C'est le même concept up & down ? ou je suis le seul à etre dans ce cas lol ?

je continu mes recherches, je vous tiendrai au courant si je trouve
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

je suis entrain de penser ...

est-ce que sa pourrait venir du code dans la class qui obtient le nom de fichier ?
j'utilise ce code (pour des fichiers msi) :

context.Response.ClearHeaders()
context.Response.Clear()
context.Response.ClearContent()
context.Response.ContentType = "application/octet-stream"
context.Response.AddHeader("Content-Disposition", "attachment; filename=" & (_File)
context.Response.WriteFile(_File) context.Response.End()

qu'en pensez-vous ?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
25
Je pensais que c'est en upload (désolé)

Fais avec une boucle de lecture binaire du style.

byte[] buffer = new byte[4096];
int byteseq = strm.Read(buffer, 0, 4096);while (byteseq > 0)
{
   context.Response.OutputStream.Write(buffer, 0, byteseq); 
   byteseq = strm.Read(buffer, 0, 4096);
}
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

merci pour ta réponse,

strm correspondant je suppose à un File.OpenRead("nomdufichier"),
j'ai donc suivi ton code, et pour des fichiers qui passent d'habitude, il m'ouvre le fichier dans le navigateur, ce qui donne par exemple : ÐÏࡱá>þÿ 8þÿÿÿfÎÏÐtéî

et avec le fichier faisant plus de 50 Mo = > page blanche !

note : j'ai bien entendu augmenté le nombre de bit à 80000000 (v
u que c'est des octects =bytes)
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Bonjour,
J'ai continué mes recherches mais en vain. Je craque ! je ne vois vraiment pas de soluce !
Si le fichier dépasse 30 Mo, il n'est pas accepté.
Pourquoi 30 Mo ? Où la limite est-elle indiquer ?
Je n'en sais rien. Bref, si vous avez d'autres infos susceptibles de m'aider, n'hésitez pas.
Je vais chercher une autre alternative, car la je suis bel et bien bloquer.

je vous tiens au courant, car c'est le genre d'astuce qui peut toujours aider :)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Je viens de tester avec un fichier msi de 190Mo et le bout de code que tu donnes et j'ai pas de soucis. J'ai testé avec IIS7 et Cassini.

Quel est le host qui va heberger ASP.net ? IIS6, IIS7 ou cassini ? quel est le client que tu utilises ? IE ? FF ? Tu fais l'appel en local ou de l'exterieur ? Si tu envoie d'autres types de fichier que msi, t'as le meme problème ?


____________________________________________
Cyril - MVP ASP.net - Consultant indépendant
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

190 Mo et sa marche ? a oui en effet.

je suis sous windows server 2003 avec IIS6

si j'utilise IE une page blanche s'affiche : "Internet Explorer ne peut pas afficher cette page Web"

alors que sous FF j'ai ce message : "[i]Erreur d'analyse XML : aucun élément trouvé
Emplacement : http://NDD.com/files/files1.msi.ashx
Numéro de ligne 1, Colonne 1 :/i"
quelle ligne 1 ? quelle colonne 1 ! bizarre.

j'envoi plusieurs autres fichiers mais qui font moins de 2 Mo en moyenne. donc sa passe nickel.

je fais l'appel de l'extérieur. en local j'ai IIS7 et je n'ai jamais chercher à le configurer ou à l'utiliser, vu sur les sont sous IIS6.
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

En fouinant dans les options, je m'arrête sur un truc (au peur de passer pour un inculte)
La bibliothèque de class "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" que l'on 'attache' à notre extension MSI (dans IIS, mappage d'extension) ne pourrait-elle pas avoir des limites étant donné que c'est la version 2 du Framework ?
J'ai alors voulu tester avec la ver 3 ou 3.5 (ces versions étant installées sur ce serveur) mais je ne trouve pas d'équivalent de fichier.

Est-ce que sa pourrait venir de ce fichier d'après vous ?
A moins que jesusonline tu ai utilisé ce fichier sous IIS7, dans ce cas, sa ne provient pas de cela?

Merci pour vos réponses
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
ASP.net 3.5 repose sur ASP.net 2.0, le core n'a pas changé depuis la v2 donc normal qu'il n'y ai pas de version 3 ni de 3.5, j'en ai parlé ici [url]http://blogs.developpeur.org/cyril/archive/2008/05/12/iis-et-asp-net-3-5-avoir-la-bonne-version-du-framework.aspx/url

Par contre tu n'as pas besoin de faire de mapping, le mapping permet de dire à IIS qui doit gérer tel ou tel extension, dans ton cas tu ne demandes pas un fichier .msi mais un fichier .ashx.


____________________________________________
Cyril - MVP ASP.net - Consultant indépendant
Messages postés
440
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

ok, merci de ta réponse.
si le mapping me sert à proteger le fichier msi. il est appeler seulement si l'user est autoriser (avec une variable de session). autrement l'user peut y accéder directement : nomdufichier.msi