2008-10-21 5 views
9

J'ai un joli petit contrôle de téléchargement de fichiers que j'ai écrit pour les formulaires Web ASP.NET qui utilisent un IFrame et ASP.NET AJAX. Cependant, lors de téléchargements volumineux, le navigateur expire avant qu'il ne puisse terminer de publier le formulaire.Prévention de l'expiration du délai de téléchargement des fichiers volumineux

Y a-t-il un moyen de l'augmenter?

Je ne suis pas vraiment intéressant dans les solutions alternatives, alors ne suggère pas de changer le tout s'il vous plaît. Cela fonctionne bien pour < 5 uploads meg, je voudrais juste l'obtenir à environ 8mb.

EDIT: La définition du délai d'attente dans Page_Load n'a pas semblé changer quoi que ce soit.

Répondre

2

Dans Page_Load, définissez Server.ScriptTimeout sur une valeur qui vous convient. Mesuré en secondes je crois.

+0

Vous feriez cela dans le iframe réel qui est posté, correct? – FlySwat

+0

Oui, si vous obtenez le délai d'expiration de la requête dans l'iframe, alors vous définissez Server.ScriptTimeout. – JasonS

10

Vous devez mettre à jour un paramètre de métabase sur IIS6 et versions ultérieures. La clé est "AspMaxRequestEntityAllowed" et est exprimée en octets. Je recommande fortement l'explorateur de métabase pour faire la modification, pataugeant par le XML à% systemroot% \ system32 \ inetserv \ metabase.xml est cependant possible.

Metabase Explorer: http://support.microsoft.com/kb/840671

Hmmm, peut-être que je suis aboyer le mauvais arbre ... vous ne seriez pas en train de faire 5 fichiers Mo si cela n'a pas été déjà réglé.

Un autre coup à lui voir votre web.config:

<system.web> 
    <httpRuntime maxRequestLength="10240" executionTimeout="360"/> 
</system.web> 

Longueur maximale de la demande est en kilo-octets et le délai d'exécution est en secondes.

+0

maxRequestLength est réellement en kilo-octets. Voir http://msdn.microsoft.com/en-us/library/e1f13641.aspx –

+0

Vous avez raison sinon le petit nombre que je mentionne n'aurait aucun sens. Merci, édité. – Godeke

1

Je pense que vous devrez peut-être ajuster les MaxRequestLength

Son dans le web.config Je pense que par défaut ses 4megs.

Ce qui suit permettrait ~ 10 fichier meg:

<httpRuntime maxRequestLength="10240" /> 
-6

Vérifiez le code de Velodoc XP Edition. Il comprend un module de téléchargement en continu, un gestionnaire de téléchargement réutilisable et des contrôles de téléchargement ASP.NET basés sur les extensions ASP.NET Ajax et il est entièrement open source.

Pour plus d'informations, consultez également www.memba.com et www.velodoc.com.

+1

Cela ne répond pas directement à la question, et il peut s'agir d'une publicité. – Odrade

+0

Le site Web lié à n'est pas utilisé actuellement. –

3

place dans votre web.config

<system.web> 
    <httpRuntime executionTimeout="360" maxRequestLength="100000" /> 

qui permet à 360 et deuxième temps d'arrêt 100 000 Ko de données téléchargées à la fois.

Si cela ne fonctionne pas, exécutez cette commande sur votre serveur IIS. (Remplacer [IISWebsitename])

C:\Windows\System32\inetsrv>appcmd set config "[IISWebsitename]" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost 

qui permet 100.000.000 octets de données de téléchargement à la fois.

+2

Merci! Le paramètre requestFiltering a fait l'affaire pour moi. Dans IIS 7, j'ai effectué la modification avec la commande suivante: Request Filtering | Règles | Modifier les paramètres de la fonction | Longueur de contenu maximale autorisée – ConnorsFan

-6

Je résolu cela en utilisant PHP avec HTML:

  1. Je commence une session
  2. entrer dans une boucle
  3. créer une boucle qui recharge la page qui fait partie du travail à un temps
  4. faire jusqu'à ce que le travail soit terminé
  5. le code à l'intérieur de la boucle fait une partie du travail
  6. incrémenter une variable de session à pointer à la prochaine partie du travail
  7. recharger la page en utilisant un script java // ceci redémarre la Severs la page boucle minuterie
  8. charge une page pour signaler le travail est fait
1

Ouvrez votre site Web fichier .config, et juste en dessous de la balise <system.web>, ajoutez la balise suivante:

<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />

maintenant, il suffit de prendre un coup d'oeil à la maxRequestLength = "4096" attribut de la balise <httpRuntime>. Comme vous l'avez peut-être réalisé, tout ce que vous devez faire est de changer la valeur à une autre valeur de votre choix (8192 pour 8 Mo, 16384 pour 16 Mo, 65536 pour 64 Mo, et ainsi de suite ...).