Erreur de dépassement de la limite de mémoire tampon HTTP 500 ou réponse lors de l’utilisation de Response.BinaryWrite dans IIS

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

Version du produit d’origine : Internet Information Services, Pages serveur actives (ASP)
Numéro de base de connaissances d’origine : 944886

Symptômes

Examinez le cas suivant :

  • Vous envoyez un fichier à un ordinateur client à partir d’un serveur web sur lequel internet Information Services (IIS) est installé.
  • Vous utilisez la Response.BinaryWrite méthode pour envoyer le fichier à l’ordinateur client et la AspBufferingOn propriété a la valeur False.

Dans ce scénario, vous pouvez recevoir l’un des messages d’erreur suivants sur l’ordinateur client :

  • Message d’erreur 1

    HTTP 500 - Erreur de serveur interne

  • Message d’erreur 2

    Erreur de l’objet 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 sa limite configurée par la mémoire tampon de réponse.

En outre, vous pouvez recevoir un message semblable à celui suivant dans le fichier journal IIS :

ASP_0251_ :_80004005|Response_Buffer_Limit_Exceeded

Cause

Ce problème se produit parce que IIS applique une valeur de mémoire tampon de réponse ASP 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 la Response.BinaryWrite mise en mémoire tampon ASP sont désactivées, 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 provoque fréquemment une mauvaise expérience utilisateur. Le navigateur web doit recevoir la grande réponse 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 de réponse 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.

Note

Dans IIS, vous pouvez activer ou désactiver la mise en mémoire tampon de réponse ASP au niveau de l’application à l’aide de la bufferingOn valeur de la ApplicationHost.config section ASP du <System.webserver> fichier ou du 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 permet 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 importante pendant le test. Une fois le test terminé, 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, procédez comme suit :

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

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

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

    Note

    LimitSize représente la taille 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 définie correctement, procédez comme suit :

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

Plus d’informations

Lorsque vous utilisez la méthode et la Response.BinaryWrite mise en mémoire tampon de réponse ASP sont désactivées, 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 de la page est définie explicitement. Par défaut, la valeur de la bufferLimit propriété dans IIS 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 ASP est désactivée.

Note

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