J'exécute une requête simple pour extraire des données de ma base de données et les afficher. Je reçois une erreur qui dit Response Buffer Limit Exceeded
.
Erreur: Erreur d'objet de réponse 'ASP 0251: 80004005'
Limite de mémoire tampon de réponse dépassée
/abc/test_maintenanceDetail.asp, ligne 0
L'exécution de la page ASP a entraîné le dépassement de la limite configurée par le tampon de réponse.
J'ai aussi essayé Response.flush
dans ma boucle et j'utilise aussi response.buffer = false
en haut de la page, mais je ne reçois toujours pas de données.
Ma base de données contient 5600 enregistrements pour cela, donnez-moi s'il vous plaît quelques étapes ou code pour résoudre le problème.
Je sais que c'est très tard, mais pour quiconque rencontre ce problème: si vous utilisez une boucle quelconque (dans mon cas, un Do-While) pour afficher les données, assurez-vous de passer au prochain enregistrement (dans mon cas, un rs.MoveNext).
Le support de Microsoft dit ceci
http://support.Microsoft.com/kb/925764
mais sur l'interface graphique, c'est plus facile:
Cela s'explique par le fait que la mise en mémoire tampon est activée par défaut et que IIS 6 ne peut pas gérer la réponse volumineuse.
En ASP classique, en haut de votre page, après <%@Language="VBScript"%>
, ajoutez: <%Response.Buffer = False%>
Dans ASP.NET, vous ajouteriez Buffer="False"
à votre directive Page. Par exemple: <%@Page Language="C#" Buffer="False"%>
Je suis confronté au même type de problème, ma version IIS est 8.5. L'augmentation du Response Buffering Limit
sous le ASP -> Limit Properties
a résolu le problème.
ASP
.Response Buffering Limit
à 40194304
(environ 40 Mo).Si vous n'êtes pas autorisé à modifier la limite de la mémoire tampon au niveau du serveur, vous devrez utiliser la méthode <% Response.Buffer = False%>.
CEPENDANT, si vous obtenez toujours cette erreur et que vous avez un grand tableau sur la page, le coupable peut être le tableau lui-même. De par leur conception, certaines versions d'Internet Explorer mettent tout le contenu en mémoire tampon avant qu'il ne soit restitué à la page. Ainsi, même si vous indiquez à la page de ne pas mettre le contenu en mémoire tampon, l'élément de table peut être mis en mémoire tampon et provoquer cette erreur.
Certaines solutions alternatives peuvent consister à paginer les résultats de la table, mais si vous devez afficher la table entière et qu'elle compte des milliers de lignes, jetez cette ligne de code au milieu de la boucle de génération de table: <% Response.Flush%>. Pour des raisons de rapidité, vous pouvez également envisager d’ajouter un compteur de base afin que la purge n’ait lieu que toutes les 25 ou 100 lignes environ.
Inconvénients de ne pas mettre en tampon la sortie:
Consultez cet article de la Base de connaissances pour plus d'informations http://support.Microsoft.com/kb/925764
J'espère que cela pourra aider.
Merci beaucoup! <% Response.Buffer = False%> a fonctionné comme un charme! Mon tableau asp/HTML qui renvoyait une page vierge contenant environ 2 700 enregistrements. Les lignes de débogage suivantes ont contribué à exposer le problème de mise en mémoire tampon: j'ai remplacé la boucle Do While comme suit et joué avec mes nombres limites pour voir ce qui se passait:
Remplacer
Ne pas rs.EOF
'etc .... votre bloc de code qui écrit les lignes de la table
rs.moveNext
Loop
avec
Faire en comptant <2500
si rs.EOF alors recomptage = 2501
'etc .... votre bloc de code qui écrit les lignes de la table
rs.moveNext
Loop
response.write "recount =" & recount
levez ou abaissez les 2500 et 2501 pour voir s’il s’agit d’un problème de mémoire tampon. pour mon jeu d’enregistrements, j’ai pu constater que le retour de page vierge, tableau vide, se passait à environ 2700 enregistrements, bonne chance à tous et merci encore de résoudre ce problème! Une si simple solution géniale!
Vous pouvez augmenter la limite comme suit:
Une autre réponse au même message d'erreur (cela résout simplement mon problème) est que le lecteur système manquait d'espace disque. Ce qui signifie environ 700kb gratuitement. La suppression de nombreux éléments inutilisés sur ce très vieux serveur, puis le redémarrage de IIS et du site Web (probablement uniquement IIS était nécessaire) font disparaître le problème.
Je suis sûr que les autres réponses sont plus utiles pour la plupart des gens, mais pour une solution rapide, assurez-vous simplement que le lecteur système dispose d'un espace disponible.
Dans mon cas, je viens d'écrire cette ligne avant rs.Open .....
Response.flush
rs.Open query, conn
J'ai corrigé l'erreur 'ASP 0251: 80004005' Response Buffer Limit comme suit:
Pour augmenter la limite de mise en mémoire tampon dans IIS 6, procédez comme suit:
Cliquez sur Démarrer, sur Exécuter, tapez cmd, puis cliquez sur OK . Tapez la commande suivante, puis appuyez sur Entrée: Cd/d% systemdrive%\inetpub\adminscripts appuyez sur Entrée: cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize Remarque LimitSize représente la taille de la limite de mise en mémoire tampon en octets. Par exemple, le nombre 67108864 définit la taille de la limite de mise en mémoire tampon sur 64 Mo . Pour confirmer que la limite de la mémoire tampon est définie correctement, procédez comme suit:
Cliquez sur Démarrer, sur Exécuter, tapez cmd, puis cliquez sur OK . Tapez la commande suivante, puis appuyez sur Entrée: Cd/d% systemdrive%\inetpub\adminscripts appuyez sur ENTREE: cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
fait référence à https://support.Microsoft.com/en-us/kb/944886
Si vous cherchez la raison et que vous ne voulez pas vous battre contre les paramètres du système, voici deux situations majeures que j'ai rencontrées: