HTTP 500- oder Antwortpuffergrenzwert bei Verwendung von Response.BinaryWrite in IIS überschritten
Dieser Artikel hilft Ihnen bei der Behebung des Fehlers (HTTP 500 oder Grenzwert für Antwortpuffer überschritten), der auftritt, wenn Sie die Response.BinaryWrite Methode zum Senden einer Datei verwenden.
Ursprüngliche Produktversion: Internetinformationsdienste 7 und höher
Ursprüngliche KB-Nummer: 944886
Problembeschreibung
Wenn Sie eine Datei von einem Webserver, auf dem Internetinformationsdienste (IIS) 7 oder eine höhere Version installiert ist, an einen Clientcomputer senden, wird auf dem Clientcomputer möglicherweise eine Fehlermeldung angezeigt, die einer 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 führte dazu, dass der Antwortpuffer den konfigurierten Grenzwert überschreitet.Fehlermeldung 3
Darüber hinaus erhalten Sie möglicherweise eine Meldung in der IIS-Protokolldatei, die folgendermaßen aussieht:
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 ASP-Standardantwortpufferwert (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.
Auflösung 1: Verringern der Antwortgröße
Um dieses Problem zu beheben, wenn Sie die Methode verwenden und die Response.BinaryWrite ASP-Pufferung deaktiviert ist, stellen Sie sicher, dass 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.
Auflö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.
Hinweis
In IIS 7 und neueren Versionen können Sie die ASP-Antwortpufferung auf Anwendungsebene aktivieren oder deaktivieren, indem Sie den bufferingOn Wert im ASP-Abschnitt der <System.webserver> Datei oder in der Datei ApplicationHost.config Web.config 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 der Tests auf einen großen Wert erhöhen. Verwenden Sie nach Abschluss der Tests den größten Wert, der im Feld "sc-bytes" in der IIS-Protokolldatei angezeigt wird, für die Antwort, 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:
Wählen Sie "Start", "Ausführen", "cmd" und dann "OK" aus.
Geben Sie den
cd /d %systemdrive%\inetpub\adminscriptsBefehl ein, und drücken Sie dann die EINGABETASTE.Geben Sie den
cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSizeBefehl ein, und drücken Sie dann die EINGABETASTE.Hinweis
LimitSizestellt die Größe des Pufferlimits in Byte dar. Beispielsweise wird für die Anzahl 67108864 die Pufferlimitgröße auf 64 MB festgelegt.
Führen Sie die folgenden Schritte aus, um zu bestätigen, dass der Puffergrenzwert korrekt festgelegt ist:
- Wählen Sie "Start", "Ausführen", "cmd" und dann "OK" aus.
- Geben Sie den
cd /d %systemdrive%\inetpub\adminscriptsBefehl ein, und drücken Sie dann die EINGABETASTE. - Geben Sie den
cscript.exe adsutil.vbs GET w3svc/aspbufferinglimitBefehl ein, und drücken Sie dann die EINGABETASTE.
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 Pufferlimiteigenschaft für die Seite ist explizit festgelegt. Standardmäßig beträgt der Wert für die bufferLimit Eigenschaft in IIS 7 oder höher 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.