Erreur http 500 ou mémoire tampon de réponse dépassée lors de l’utilisation de Response.BinaryWrite dans IIS

Cet article vous aide à résoudre l’erreur (HTTP 500 ou limite de mémoire tampon de réponse dépassée) qui se produit lorsque vous utilisez la Response.BinaryWrite méthode pour envoyer un fichier.

Version d’origine du produit : Internet Information Services 7 et versions ultérieures
Numéro de la base de connaissances d’origine : 944886

Symptômes

Lorsque vous envoyez un fichier à un ordinateur client à partir d’un serveur Web sur lequel Internet Information Services (IIS) 7 ou une version ultérieure est installé, vous pouvez recevoir sur l’ordinateur client un message d’erreur semblable à celui-ci :

  • Message d’erreur 1

    HTTP 500 - Erreur interne du serveur

  • Message d’erreur 2

    Erreur d’objet de réponse « ASP 0251 : 80004005 »
    Limite de mémoire tampon de réponse dépassée
    L’exécution de la page ASP a provoqué le dépassement de la limite configurée par la mémoire tampon de réponse.

  • Message d’erreur 3

    En outre, vous pouvez recevoir un message dans le fichier journal IIS qui ressemble à ce qui suit :

    ASP_0251_ :_80004005|Response_Buffer_Limit_Exceeded

Ce problème se produit lorsque vous utilisez la Response.BinaryWrite méthode pour envoyer le fichier à l’ordinateur client et que la AspBufferingOn propriété est définie sur False.

Cause

Ce problème se produit car IIS applique une valeur de mémoire tampon de réponse ASP (Active Server Pages) par défaut de 4 Mo lorsque la mise en mémoire tampon de réponse ASP est désactivée.

Dans la plupart des scénarios, la limite de mémoire tampon de 4 Mo est suffisante pour les réponses ASP envoyées aux clients Web. Si cette limite est insuffisante, utilisez l’une des méthodes suivantes.

Résolution 1 : Réduire la taille de la réponse

Pour résoudre ce problème lorsque vous utilisez la méthode et que la Response.BinaryWrite mise en mémoire tampon ASP est désactivée, vérifiez que les données retournées au client ne sont pas supérieures à 4 Mo.

Si la réponse est supérieure à la valeur par défaut de 4 Mo, cette taille entraîne souvent une mauvaise expérience utilisateur. Le navigateur web doit recevoir la réponse volumineuse sur le réseau. Ensuite, le navigateur web doit analyser et afficher une réponse HTML volumineuse.

Résolution 2 : Activer la mise en mémoire tampon des réponses ASP et augmenter la limite de mémoire tampon

Vous pouvez utiliser la AspBufferingOn propriété de métabase IIS pour activer ou désactiver la mise en mémoire tampon au niveau de l’application.

Remarque

Dans IIS 7 et versions ultérieures, vous pouvez activer ou désactiver la mise en mémoire tampon des réponses ASP au niveau de l’application en utilisant la bufferingOn valeur dans la section ASP de <System.webserver> dans le ApplicationHost.config fichier ou dans le Web.config fichier.

Pour activer ou désactiver la mise en mémoire tampon au niveau de la page, vous pouvez utiliser la Response.Buffer propriété .

Si vous devez augmenter la limite de mémoire tampon, sélectionnez une limite de mémoire tampon qui autorise la plus grande taille de réponse connue. Si vous ne connaissez pas la plus grande taille de réponse à l’avance, vous pouvez augmenter la limite de mémoire tampon à une valeur élevée pendant le test. Une fois les tests terminés, utilisez la plus grande valeur qui apparaît dans le champ sc-bytes du fichier journal IIS pour la réponse générée pour la page.

Pour augmenter la limite de mise en mémoire tampon dans IIS 7 et les versions ultérieures, procédez comme suit :

  1. Sélectionnez Démarrer, Exécuter, tapez cmd, puis sélectionnez OK.

  2. Tapez la cd /d %systemdrive%\inetpub\adminscripts commande, puis appuyez sur Entrée.

  3. Tapez la cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize commande, puis appuyez sur Entrée.

    Remarque

    LimitSize représente la taille de la limite de mise en mémoire tampon en octets. Par exemple, le nombre 67108864 définit la taille limite de mise en mémoire tampon sur 64 Mo.

Pour vérifier que la limite de mémoire tampon est correctement définie, procédez comme suit :

  1. Sélectionnez Démarrer, Exécuter, tapez cmd, puis sélectionnez OK.
  2. Tapez la cd /d %systemdrive%\inetpub\adminscripts commande, puis appuyez sur Entrée.
  3. Tapez la cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit commande, puis appuyez sur Entrée.

Plus d’informations

Lorsque vous utilisez la méthode et que la Response.BinaryWrite mise en mémoire tampon de réponse ASP est désactivée, vous ne pouvez envoyer que 4 Mo de données au client, sauf si la propriété de limite de mise en mémoire tampon pour la page est explicitement définie. Par défaut, la valeur de la bufferLimit propriété dans IIS 7 ou une version ultérieure est de 4 194 304 octets.

En outre, l’API BinaryWrite() échoue si la réponse au client est supérieure à la valeur limite de mémoire tampon, même si la mise en mémoire tampon de la réponse ASP est désactivée.

Remarque

Nous vous recommandons d’activer la mise en mémoire tampon des réponses ASP. La mise en mémoire tampon des réponses ASP augmente les performances d’une application web.