データベースからデータを取得して表示するための簡単なクエリを実行しています。 Response Buffer Limit Exceeded
というエラーが表示されます。
エラー:応答オブジェクトエラー 'ASP 0251:80004005'
応答バッファの制限を超えました
/abc/test_maintenanceDetail.asp、行0
ASPページの実行により、応答バッファが設定された制限を超えました。
また、ループでResponse.flush
を試し、ページの上部でresponse.buffer = false
を使用しましたが、まだデータを取得していません。
私のデータベースにはそのための5600レコードが含まれています。問題を解決するための手順またはコードを教えてください。
私はこれがかなり遅いことを知っていますが、この問題に遭遇した他の人にとって:何らかの種類のループ(私の場合はDo-While)を使用してデータを表示している場合は、次のレコードに移動していることを確認してください(私の場合、rs.MoveNext)。
マイクロソフトのサポートはこれを言う
http://support.Microsoft.com/kb/925764
しかし、GUIでは簡単です。
これが発生している理由は、バッファリングがデフォルトでオンになっており、IIS 6は大きな応答を処理できないためです。
Classic ASPでは、ページ上部の<%@Language="VBScript"%>
の後に以下を追加します:<%Response.Buffer = False%>
ASP.NETでは、Buffer="False"
をPageディレクティブに追加します。例:<%@Page Language="C#" Buffer="False"%>
サーバーレベルでバッファ制限を変更できない場合は、<%Response.Buffer = False%>メソッドを使用する必要があります。
ただし、まだこのエラーが発生し、ページに大きなテーブルがある場合、原因はテーブル自体である可能性があります。設計上、Internet Explorerの一部のバージョンは、コンテンツがページにレンダリングされる前の間にコンテンツ全体をバッファリングします。そのため、コンテンツをバッファリングしないようにページに指示している場合でも、テーブル要素がバッファリングされ、このエラーが発生する可能性があります。
別の解決策としては、テーブルの結果をページ分割することもありますが、テーブル全体を表示する必要があり、数千行ある場合は、テーブル生成ループの途中で次のコード行をスローします:<%Response.Flush%>。速度を考慮して、フラッシュが25行または100行程度ごとにのみ発生するように、基本的なカウンターを追加することも検討してください。
出力をバッファリングしないことの欠点:
詳細については、このKB記事を参照してください http://support.Microsoft.com/kb/925764
お役に立てば幸いです。
どうもありがとうございます! <%Response.Buffer = False%>魔法のように機能しました!約2700レコードで空白ページを返していた私のasp/HTMLテーブル。次のデバッグ行は、バッファリングの問題を明らかにするのに役立ちました。DoWhileループを次のように置き換え、制限値を再生して、何が起こっているかを確認しました。
置換
Rs.EOFではありませんが
'etc ....テーブルの行を書き込むコードブロック
rs.moveNext
Loop
with
2500未満のカウント中に実行
rs.EOFの場合、再カウント= 2501
'etc ....テーブルの行を書き込むコードブロック
rs.moveNext
Loop
response.write "recount ="&recount
バッファの問題かどうかを確認するために2500と2501を上下します。私のレコードセットでは、空白ページリターン、空白テーブルが約2700レコードで発生していることがわかりました。この問題を解決するために再び!あなたはこのようなシンプルで素晴らしい解決策!
次のように制限を増やすことができます。
同じエラーメッセージに対するもう1つの答え(これで問題が解決しました)は、システムドライブのディスク領域が不足しているというものです。約700kbの空きがあります。この本当に古いサーバー上の多くの未使用のものを削除してからIISとWebサイト(おそらくIISのみが必要でした)を再起動すると、問題が消えます。
他の回答はほとんどの人にとってより役立つと確信していますが、簡単に修正するには、システムドライブに空き領域があることを確認してください。
私の場合、rs.Open .....の前にこの行を書いています。
Response.flush
rs.Openクエリ、conn
エラー「ASP 0251:80004005」の応答バッファ制限を次のように修正しました。
IIS 6のバッファリング制限を増やすには、次の手順に従います。
[スタート]ボタン、[ファイル名を指定して実行]の順にクリックし、cmdと入力して[OK]をクリックします。次のコマンドを入力し、Enterキーを押します。cd/d%systemdrive%\ inetpub\adminscripts次のコマンドを入力してEnterキーを押します。cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSizeメモLimitSizeはバッファリングの制限サイズをバイト単位で表します。たとえば、67108864という数値は、バッファリングの制限サイズを64 MBに設定します。バッファー制限が正しく設定されていることを確認するには、次の手順を実行します。
[スタート]ボタン、[ファイル名を指定して実行]の順にクリックし、cmdと入力して[OK]をクリックします。次のコマンドを入力してEnterキーを押します。cd/d%systemdrive%\ inetpub\adminscripts次のコマンドを入力してEnterキーを押します。cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
理由を探していて、システム設定と戦いたくない場合、これらは私が直面した2つの主要な状況です。