Http 500- oder Antwortpuffergrenzwert hat fehler überschritten, wenn Response.BinaryWrite in IIS verwendet wird

In diesem Artikel erfahren Sie, wie Sie den Fehler (HTTP 500 oder Antwortpufferlimit überschritten) beheben, der auftritt, wenn Sie die Response.BinaryWrite -Methode zum Senden einer Datei verwenden.

Ursprüngliche Produktversion: Internetinformationsdienste 7 und höhere Versionen
Ursprüngliche KB-Nummer: 944886

Symptome

Wenn Sie eine Datei von einem Webserver an einen Clientcomputer senden, auf dem Internetinformationsdienste (IIS) 7 oder höher installiert sind, erhalten Sie möglicherweise eine Fehlermeldung auf dem Clientcomputer, die der folgenden ähnelt:

  • Fehlermeldung 1

    HTTP 500 : Interner Serverfehler

  • Fehlermeldung 2

    Antwortobjektfehler "ASP 0251 : 80004005"
    Grenzwert für Antwortpuffer überschritten
    Die Ausführung der ASP-Seite hat dazu geführt, dass der Antwortpuffer seinen konfigurierten Grenzwert überschreitet.

  • Fehlermeldung 3

    Darüber hinaus erhalten Sie möglicherweise eine Meldung in der IIS-Protokolldatei, die der folgenden ähnelt:

    ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Dieses Problem tritt auf, wenn Sie die Response.BinaryWrite -Methode verwenden, um die Datei an den Clientcomputer zu senden und die AspBufferingOn -Eigenschaft auf False festgelegt ist.

Ursache

Dieses Problem tritt auf, weil IIS einen standardmäßigen ASP-Antwortpufferwert (Active Server Pages) von 4 MB erzwingt, wenn die ASP-Antwortpufferung deaktiviert ist.

In den meisten Szenarien reicht der Puffergrenzwert von 4 MB für ASP-Antworten aus, die an Webclients gesendet werden. Wenn dieser Grenzwert nicht ausreicht, verwenden Sie eine der folgenden Methoden.

Lösung 1: Verringern der Antwortgröße

Um dieses Problem zu beheben, wenn Sie die -Methode verwenden und asp-Pufferung Response.BinaryWrite deaktiviert ist, überprüfen Sie, ob die an den Client zurückgegebenen Daten nicht größer als 4 MB sind.

Wenn die Antwort größer als der Standardwert von 4 MB ist, führt diese Größe häufig zu einer schlechten Benutzererfahrung. Der Webbrowser muss die große Antwort über das Netzwerk empfangen. Anschließend muss der Webbrowser eine große HTML-Antwort analysieren und anzeigen.

Lösung 2: Aktivieren der ASP-Antwortpufferung und Erhöhen des Puffergrenzwerts

Sie können die IIS-Metabasiseigenschaft AspBufferingOn verwenden, um die Pufferung auf Anwendungsebene zu aktivieren oder zu deaktivieren.

Hinweis

In IIS 7 und höheren Versionen können Sie die ASP-Antwortpufferung auf Anwendungsebene aktivieren oder deaktivieren, indem Sie den bufferingOn Wert im ASP-Abschnitt von <System.webserver> in der ApplicationHost.config Datei oder in der Web.config Datei verwenden.

Zum Aktivieren oder Deaktivieren der Pufferung auf Seitenebene können Sie die Response.Buffer -Eigenschaft verwenden.

Wenn Sie den Puffergrenzwert erhöhen müssen, wählen Sie einen Puffergrenzwert aus, der die größte bekannte Antwortgröße zulässt. Wenn Sie die größte Antwortgröße im Voraus nicht kennen, können Sie den Puffergrenzwert während des Tests auf einen großen Wert erhöhen. Nachdem Sie die Tests abgeschlossen haben, verwenden Sie den größten Wert, der im Feld sc-bytes in der IIS-Protokolldatei für die Antwort angezeigt wird, die für die Seite generiert wird.

Führen Sie die folgenden Schritte aus, um den Puffergrenzwert in IIS 7 und höheren Versionen zu erhöhen:

  1. Wählen Sie Start aus, wählen Sie Ausführen aus, geben Sie cmd ein, und wählen Sie dann OK aus.

  2. Geben Sie den cd /d %systemdrive%\inetpub\adminscripts Befehl ein, und drücken Sie dann die EINGABETASTE.

  3. Geben Sie den cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize Befehl ein, und drücken Sie dann die EINGABETASTE.

    Hinweis

    LimitSize stellt die Pufferbegrenzungsgröße in Bytes dar. Die Anzahl 67108864 legt beispielsweise die Größe des Pufferungslimits auf 64 MB fest.

Führen Sie die folgenden Schritte aus, um zu bestätigen, dass der Puffergrenzwert richtig festgelegt wurde:

  1. Wählen Sie Start aus, wählen Sie Ausführen aus, geben Sie cmd ein, und wählen Sie dann OK aus.
  2. Geben Sie den cd /d %systemdrive%\inetpub\adminscripts Befehl ein, und drücken Sie dann die EINGABETASTE.
  3. Geben Sie den cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit Befehl ein, und drücken Sie dann die EINGABETASTE.

Weitere Informationen

Wenn Sie die Response.BinaryWrite -Methode verwenden und die ASP-Antwortpufferung deaktiviert ist, können Sie nur 4 MB Daten an den Client senden, es sei denn, die Eigenschaft pufferungslimit für die Seite ist explizit festgelegt. Standardmäßig beträgt der Wert für die bufferLimit Eigenschaft in IIS 7 oder einer höheren Version 4.194.304 Byte.

Darüber hinaus schlägt die BinaryWrite() API fehl, wenn die Antwort an den Client größer als der Puffergrenzwert ist, obwohl die ASP-Antwortpufferung deaktiviert ist.

Hinweis

Es wird empfohlen, die ASP-Antwortpufferung zu aktivieren. Die ASP-Antwortpufferung erhöht die Leistung einer Webanwendung.