IIS 8.5 : Problème de transfert de fichier Le sujet est résolu
Modérateurs : Modérateurs, Modérateurs_Applicatifs
IIS 8.5 : Problème de transfert de fichier
Bonjour,
Sur notre instance IIS 8.5, un morceau de code tout simple permet d'uploader des fichiers dans un répertoire.
Un fichier de 3.27 Mo passe sans problème alors qu'un fichier de 6.54 Mo ne passe pas et déclenche une erreur "La connexion a été réinitialisée" dans Firefox.
Dans les journaux d'évènements, je constate bien le problème :
Event code: 3004
Event message: La taille du postage a dépassé les limites autorisées.
...
Il me semble que par défaut la taille maximale est de 30 Mo non ?
J'ai modifié la configuration de IIS pour appliquer ceci :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
(en fait, j'ai multiplié par 10)
Mais le problème reste inchangé. Un fichier de 6Mo ne passe pas et déclenche une erreur dans les journaux d'évènements :
Event code: 3004
Event message: La taille du postage a dépassé les limites autorisées.
Event time: 24/06/2016 15:59:48
Event time (UTC): 24/06/2016 13:59:48
Event ID: 2dcde46ceb374969be78bd8d1369c827
Event sequence: 4
Event occurrence: 1
Event detail code: 0
...
Exception information:
Exception type: HttpException
Exception message: Longueur maximale de la demande dépassée.
à System.Web.HttpRequest.GetEntireRawContent()
à System.Web.HttpRequest.GetMultipartContent()
à System.Web.HttpRequest.FillInFormCollection()
à System.Web.HttpRequest.EnsureForm()
à System.Web.HttpRequest.get_Form()
à System.Web.HttpRequest.get_HasForm()
à System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
à System.Web.UI.Page.DeterminePostBackMode()
à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Faut-il changer une valeur autre part ? Je ne trouve pas d'autres limites ?
Code de la page :
Merci !
Sur notre instance IIS 8.5, un morceau de code tout simple permet d'uploader des fichiers dans un répertoire.
Un fichier de 3.27 Mo passe sans problème alors qu'un fichier de 6.54 Mo ne passe pas et déclenche une erreur "La connexion a été réinitialisée" dans Firefox.
Dans les journaux d'évènements, je constate bien le problème :
Event code: 3004
Event message: La taille du postage a dépassé les limites autorisées.
...
Il me semble que par défaut la taille maximale est de 30 Mo non ?
J'ai modifié la configuration de IIS pour appliquer ceci :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
(en fait, j'ai multiplié par 10)
Mais le problème reste inchangé. Un fichier de 6Mo ne passe pas et déclenche une erreur dans les journaux d'évènements :
Event code: 3004
Event message: La taille du postage a dépassé les limites autorisées.
Event time: 24/06/2016 15:59:48
Event time (UTC): 24/06/2016 13:59:48
Event ID: 2dcde46ceb374969be78bd8d1369c827
Event sequence: 4
Event occurrence: 1
Event detail code: 0
...
Exception information:
Exception type: HttpException
Exception message: Longueur maximale de la demande dépassée.
à System.Web.HttpRequest.GetEntireRawContent()
à System.Web.HttpRequest.GetMultipartContent()
à System.Web.HttpRequest.FillInFormCollection()
à System.Web.HttpRequest.EnsureForm()
à System.Web.HttpRequest.get_Form()
à System.Web.HttpRequest.get_HasForm()
à System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
à System.Web.UI.Page.DeterminePostBackMode()
à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Faut-il changer une valeur autre part ? Je ne trouve pas d'autres limites ?
Code de la page :
Code : Tout sélectionner
<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Start_upload(ByVal sender As Object, _
ByVal e As System.EventArgs)
If FileUpload1.HasFile Then
Try
FileUpload1.SaveAs(Server.MapPath("~/Uploads/") & FileUpload1.FileName)
Label1.Text = "Nom du fichier : " & _
FileUpload1.PostedFile.FileName & "<br>" & _
"Taille du fichier : " & _
FileUpload1.PostedFile.ContentLength / 1024 / 1024 & " Mo <br>" & _
"Type MIME : " & _
FileUpload1.PostedFile.ContentType
Catch ex As Exception
Label1.Text = "ERREUR: " & ex.Message.ToString()
End Try
Else
Label1.Text = "Aucun fichier sélectionné."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Téléchargement de fichiers</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" /><br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Start_upload" Text="Télécharger le fichier" /> <br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label></div>
</form>
</body>
</html>
Merci !
Re: IIS 8.5 : Problème de transfert de fichier
Tu dois aussi configurer maxRequestLength (https://msdn.microsoft.com/en-us/librar ... .100).aspx) en plus de maxAllowedContentLength. Sa valeur par défaut est de 4096Kb, ce qui explique que tu puisses envoyer un fichier de 3.27Mb.
Nicolas Dietrich
Software Development Manager Oracle - Oracle Database Clusterware Team
Ex-Directeur R&D Secib
Ex-Microsoft (Internet Developer Escalation Engineer & Technical Account Manager Dev)
Ex-MSDN Blog: http://blogs.msdn.com/nicd/
Software Development Manager Oracle - Oracle Database Clusterware Team
Ex-Directeur R&D Secib
Ex-Microsoft (Internet Developer Escalation Engineer & Technical Account Manager Dev)
Ex-MSDN Blog: http://blogs.msdn.com/nicd/
Re: IIS 8.5 : Problème de transfert de fichier Le sujet est résolu
Ah oui, je viens de tester ça marche mieux !
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime maxRequestLength="300000000" executionTimeout="600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
Merci
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime maxRequestLength="300000000" executionTimeout="600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
Merci

Re: IIS 8.5 : Problème de transfert de fichier
Par contre maxRequestLength est en kB alors que maxAllowedContentLength est en bytes. Si je me trompe pas ton maxRequestLength="300000000" signifie donc que tu autorise des requêtes jusqu'à 286Gb. Si c'est pour un système de production je te conseille de le diminuer à une taille résonnable.
Nicolas Dietrich
Software Development Manager Oracle - Oracle Database Clusterware Team
Ex-Directeur R&D Secib
Ex-Microsoft (Internet Developer Escalation Engineer & Technical Account Manager Dev)
Ex-MSDN Blog: http://blogs.msdn.com/nicd/
Software Development Manager Oracle - Oracle Database Clusterware Team
Ex-Directeur R&D Secib
Ex-Microsoft (Internet Developer Escalation Engineer & Technical Account Manager Dev)
Ex-MSDN Blog: http://blogs.msdn.com/nicd/
Re: IIS 8.5 : Problème de transfert de fichier
Merci pour cette remarque, je vais adapter la configuration.