Freigeben über


DER HTTP 500- oder Antwortpuffergrenzwert wurde überschritten, wenn "Response.BinaryWrite" in IIS verwendet wird.

Dieser Artikel hilft Ihnen, den Fehler zu beheben (HTTP 500- oder Antwortpuffergrenzwert überschritten), der auftritt, wenn Sie die Response.BinaryWrite Methode in Active Server Pages (ASP) zum Senden einer Datei verwenden.

Ursprüngliche Produktversion: Internetinformationsdienste, Active Server Pages (ASP)
Ursprüngliche KB-Nummer: 944886

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie senden eine Datei von einem Webserver, auf dem Internetinformationsdienste (IIS) installiert ist, an einen Clientcomputer.
  • Sie verwenden die Response.BinaryWrite Methode, um die Datei an den Clientcomputer zu senden, und die AspBufferingOn Eigenschaft ist auf "False" festgelegt.

In diesem Szenario erhalten Sie möglicherweise eine der folgenden Fehlermeldungen auf dem Clientcomputer:

  • Fehlermeldung 1

    HTTP 500 – Interner Serverfehler

  • Fehlermeldung 2

    Antwortobjektfehler 'ASP 0251 : 80004005'
    Der Antwortpuffergrenzwert wurde überschritten.
    Die Ausführung der ASP-Seite führte dazu, dass der Antwortpuffer den konfigurierten Grenzwert überschreitet.

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

ASP_0251_:_80004005|Response_Buffer_Limit_Exceeded

Ursache

Dieses Problem tritt auf, da IIS einen standardmäßigen ASP-Antwortpufferwert von 4 MB erzwingt, wenn die ASP-Antwortpufferung deaktiviert ist.

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

Auflösung 1: Verringern der Antwortgröße

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

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

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

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

Notiz

In IIS können Sie die ASP-Antwortpufferung auf Anwendungsebene aktivieren oder deaktivieren, indem Sie den bufferingOn Wert im ASP-Abschnitt <System.webserver> 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 den Test 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 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 Befehl ein cd /d %systemdrive%\inetpub\adminscripts , und wählen Sie dann die EINGABETASTE aus.

  3. Geben Sie den Befehl ein cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize , und wählen Sie dann die EINGABETASTE aus.

    Notiz

    LimitSize stellt die Größe der Puffergrenze in Byte dar. Beispielsweise legt die Zahl 67108864 die Puffergrenze auf 64 MB fest.

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

  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 Befehl ein cd /d %systemdrive%\inetpub\adminscripts , und wählen Sie dann die EINGABETASTE aus.
  3. Geben Sie den Befehl ein cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit , und wählen Sie dann die EINGABETASTE aus.

Weitere Informationen

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

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

Notiz

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