J'ai écrit un HttpHandler afin de recevoir (télécharger) des fichiers. Il fonctionne sur IIS 8. Mon code fonctionne, mais seulement pour les très petits fichiers (< 1-2 Mo). Pour les fichiers plus volumineux, le code tombe en panne - sans même lancer une exception - il s'arrête et renvoie un message d'erreur "500 internal server error" au client.Crash dans HttpHandler en raison de la taille du flux
Mon code ressemble à ceci:
int bufferSize = 4096;
string parameterString;
using (var bs = context.Request.GetBufferlessInputStream(true))
using (var ms = new MemoryStream())
{
byte[] fileContents = new byte[bufferSize];
int charsRead = bs.Read(fileContents, 0, bufferSize);
while (charsRead > 0)
{
ms.Write(fileContents, 0, bufferSize);
charsRead = bs.Read(fileContents, 0, bufferSize);
}
parameterString = Encoding.UTF8.GetString(ms.ToArray());
}
Quand je reçois mon débogueur attacha arrête juste à la dernière ligne.
Ma config ressemble à ceci:
<basicHttpBinding>
<binding name="XXXX" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="21474836470" maxBufferSize="2147483647" maxReceivedMessageSize="21474836470">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
</binding>
</basicHttpBinding>
Je suis perdu à ce moment que je ne comprends pas pourquoi ma dernière ligne devrait être un problème? Est-ce autre chose?