wake-up-neo.com

Antwortpufferlimit überschritten

Ich führe eine einfache Abfrage aus, um Daten aus meiner Datenbank zu holen und anzuzeigen. Ich erhalte eine Fehlermeldung, die Response Buffer Limit Exceeded sagt. 

Fehler ist: Antwortobjektfehler "ASP 0251: 80004005"
Antwortpufferlimit überschritten
/abc/test_maintenanceDetail.asp, Zeile 0
Die Ausführung der Seite ASP führte dazu, dass der Antwortpuffer seine konfigurierte Grenze überschritt. 

Ich habe auch Response.flush in meiner Schleife ausprobiert und auch response.buffer = false in meinem oberen Bereich der Seite verwendet, aber trotzdem bekomme ich keine Daten.

Meine Datenbank enthält 5600 Datensätze. Bitte geben Sie mir einige Schritte oder Code, um das Problem zu lösen.

37
Samir

Ich weiß, dass dies zu spät ist, aber für alle anderen, die dieses Problem haben: Wenn Sie eine Schleife (in meinem Fall ein Do-While) zum Anzeigen der Daten verwenden, stellen Sie sicher, dass Sie zum nächsten Datensatz wechseln (in meinem Fall ein rs.MoveNext).

46
SMM

Die Unterstützung von Microsoft sagt dies

http://support.Microsoft.com/kb/925764

aber auf der GUI ist es einfacher:

  • Klicken Sie im Server-Manager auf ASP.
  • Ändern Sie das Pufferlimit 4 MB in 64 MB.
  • Übernehmen und neu starten.
42
cmujica

Der Grund dafür ist, dass die Pufferung standardmäßig aktiviert ist und IIS 6 die große Antwort nicht verarbeiten kann. 

Fügen Sie in Classic ASP oben auf Ihrer Seite nach <%@Language="VBScript"%> Folgendes hinzu: <%Response.Buffer = False%>

In ASP.NET würden Sie Ihrer Page-Direktive Buffer="False" hinzufügen. Zum Beispiel: <%@Page Language="C#" Buffer="False"%>

24
Muhammad Naveed

Ich hatte die gleiche Art von Problem, meine IIS -Version ist 8.5. Der Response Buffering Limit unter dem ASP -> Limit Properties wurde behoben.

  1. Wählen Sie in IIS 8.5 Ihr Projekt aus. Sie können die Optionen auf der rechten Seite sehen. Unter dem IIS können Sie die Option ASP sehen.

 ASP option

  1. Erhöhen Sie im Optionsfenster den Response Buffering Limit auf 40194304 (ca. 40 MB).

 Increase buffer limit

  1. Navigieren Sie weg von der Option. Rechts oben sehen Sie das Menü Aktionen, wählen Sie Übernehmen. Es hat mein Problem gelöst.

 Apply settings

8
Arulkumar

Wenn Sie das Pufferlimit auf Serverebene nicht ändern dürfen, müssen Sie die Methode <% Response.Buffer = False%> verwenden.

Wenn Sie jedoch immer noch diesen Fehler erhalten und eine große Tabelle auf der Seite haben, kann der Schuldige die Tabelle selbst sein. Einige Versionen von Internet Explorer werden den gesamten Inhalt zwischenspeichern, bevor er auf der Seite dargestellt wird. Wenn Sie also der Seite mitteilen, dass der Inhalt nicht gepuffert werden soll, wird das Tabellenelement möglicherweise gepuffert und verursacht diesen Fehler.

Einige alternative Lösungen können die Ergebnisse der Tabelle paginieren. Wenn Sie jedoch die gesamte Tabelle anzeigen müssen und Tausende Zeilen enthalten, werfen Sie diese Codezeile in die Mitte der Tabellengenerierungsschleife: <% Response.Flush%>. Aus Geschwindigkeitsgründen sollten Sie auch einen Basiszähler hinzufügen, so dass die Spülung nur alle 25 oder 100 Zeilen erfolgt. 

Nachteile der Pufferung der Ausgabe:

  1. verlangsamung des gesamten Seitenladens
  2. tabellen und Spalten passen ihre Breite an, wenn der Inhalt gefüllt wird (die Tabelle scheint zu wackeln)
  3. Benutzer können auf Links klicken und mit der Seite interagieren, bevor sie vollständig geladen ist. Wenn Sie also unten auf der Seite Javascript verwenden, können Sie es an den oberen Rand verschieben, um sicherzustellen, dass es geladen wird, bevor einige der sich schneller bewegenden Benutzer auf Dinge klicken.

Weitere Informationen finden Sie in diesem KB-Artikel http://support.Microsoft.com/kb/925764

Hoffentlich hilft das.

5
stevepowell2000

Ich danke dir sehr! <% Response.Buffer = False%> arbeitete wie ein Zauber! Meine ASP/HTML-Tabelle, die bei ungefähr 2700 Datensätzen eine leere Seite zurückgegeben hat. Die folgenden Debugging-Zeilen halfen, das Pufferproblem aufzudecken: Ich ersetze die Do While-Schleife wie folgt und spielte mit meinen Limit-Nummern, um zu sehen, was passiert ist: 

Ersetzen  

Während nicht rs.EOF

'etc .... Ihr Codeblock, der die Tabellenzeilen schreibt

rs.moveNext 

Loop

mit  

Während des erneuten Abzählens <2500

wenn rs.EOF dann erneut zählen = 2501 

'etc .... Ihr Codeblock, der die Tabellenzeilen schreibt

rs.moveNext 

Loop

response.write "recount =" & recount

Erhöhen oder senken Sie den 2500 und 2501, um festzustellen, ob es sich um ein Pufferproblem handelt. Für meinen Datensatz konnte ich sehen, dass die leere Seite zurückkehrte, ein leerer Tisch, bei etwa 2700 Datensätzen, viel Glück an alle und nochmals vielen Dank für das Lösen dieses Problems! Eine so einfache Lösung!

5
Kalaine

Sie können das Limit wie folgt erhöhen:

  1. Stoppen Sie IIS.
  2. Suchen Sie die Datei% WinDir%\System32\Inetsrv\Metabase.xml
  3. Ändern Sie den AspBufferingLimit-Wert. Der Standardwert ist 4194304. Dies entspricht etwa 4 MB . Ändern in 20 MB (20971520).
  4. Starten Sie IIS neu.
3
shana

Eine andere Antwort auf dieselbe Fehlermeldung (dies hat nur mein Problem behoben) ist, dass das Systemlaufwerk zu wenig Festplattenspeicher hatte. Das bedeutet ungefähr 700kb frei. Wenn Sie auf diesem wirklich alten Server eine Menge ungenutzter Inhalte löschen und anschließend IIS und die Website neu starten (wahrscheinlich war nur IIS erforderlich), ist das Problem für mich verschwunden.

Ich bin mir sicher, dass die anderen Antworten für die meisten Leute nützlicher sind. Stellen Sie jedoch für eine schnelle Lösung sicher, dass auf dem Systemlaufwerk etwas freier Speicherplatz vorhanden ist.

1
Matt Dawdy

In meinem Fall schreibe ich diese Zeile vor rs.Open .....

Response.flush

offene Abfrage, Conn

0
Edison Neza

Ich habe den Fehler "ASP 0251: 80004005" als Antwortpufferlimit wie folgt behoben:

Gehen Sie folgendermaßen vor, um das Pufferungslimit in IIS 6 zu erhöhen:

Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie cmd ein und klicken Sie dann auf OK. Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE: Cd/d% systemdrive%\inetpub\adminscripts Geben Sie den folgenden Befehl ein und geben Sie dann ein Drücken Sie die EINGABETASTE: cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize Hinweis: LimitSize gibt die Größe des Puffergrenzwerts in Byte an. Beispielsweise setzt die Nummer 67108864 die Größe der Pufferbegrenzung auf 64 MB . Um zu bestätigen, dass die Pufferbegrenzung richtig eingestellt ist, gehen Sie folgendermaßen vor:

Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie cmd ein und klicken Sie dann auf OK. Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE: Cd/d% systemdrive%\inetpub\adminscripts Geben Sie den folgenden Befehl ein und geben Sie dann ein Drücken Sie die EINGABETASTE: cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit

bezieht sich auf https://support.Microsoft.com/en-us/kb/944886

0
Blair

Wenn Sie nach dem Grund suchen und die Systemeinstellungen nicht ändern möchten, sind dies zwei wichtige Situationen, mit denen ich konfrontiert war:

  1. Möglicherweise haben Sie eine Endlosschleife ohne next oder recordest.movenext
  2. Ihre Textdaten sind sehr groß, aber Sie denken, dass dies nicht der Fall ist! Der häufigste Grund für diese Situation ist: Kopieren-Einfügen eines Bildes aus Microsoft Word direkt in den Editor. Der Server übersetzt das Bild in Datenobjekte und speichert es in Ihrem Textfeld. Dies kann leicht die Datenbankressourcen belegen und ein Pufferproblem verursachen, wenn Sie die Daten erneut aufrufen.
0
Ali Sheikhpour