首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP Classic Response buffer exeeded错误

ASP Classic Response buffer exeeded错误
EN

Stack Overflow用户
提问于 2011-12-21 22:59:09
回答 2查看 361关注 0票数 0

这段代码一直运行到今天,我一直收到缓冲区超出的错误。我确信有更好的方法可以做到这一点,但我不知道该怎么做。

我要做的是显示从当前日期到两周后的任何条目。用户可以输入这两周内的任何日期,表将使用默认的“绿色”跨度填充其间或之后的空格。我让它一直工作到今天。我已经三个星期没碰过它了,我也不知道发生了什么。我是一个低级的图形设计师,他的老板不知道html/css和asp/sql驱动的应用程序之间的区别。在我发疯之前请帮帮我。

代码语言:javascript
复制
        <div class="cond_holder">
        <div class="dir_name">PEDS CARDIOLOGY</div>
<%
        Dim this_day_peds_cardio
        this_day_peds_cardio = Date

        Dim Conditions_peds_cardio
        Dim Conditions_peds_cardio_cmd
        Dim Conditions_peds_cardio_numRows

        Set Conditions_peds_cardio_cmd = Server.CreateObject ("ADODB.Command")
        Conditions_peds_cardio_cmd.ActiveConnection = MM_webdbs_STRING
        Conditions_peds_cardio_cmd.CommandText = "SELECT * FROM dbo.ryg_conditions WHERE aoc='1' AND Day >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) ORDER BY aoc ASC, Day ASC" 
        Conditions_peds_cardio_cmd.Prepared = true

        Set Conditions_peds_cardio = Conditions_peds_cardio_cmd.Execute
        Conditions_peds_cardio_numRows = 0

        Dim Repeat_peds_cardio__numRows
        Dim Repeat_peds_cardio__index

        Repeat_peds_cardio__numRows = 14
        Repeat_peds_cardio__index = 0
        Conditions_peds_cardio_numRows = Conditions_peds_cardio_numRows + Repeat_peds_cardio__numRows

        While ((Repeat_peds_cardio__numRows <> 0) AND (NOT Conditions_peds_cardio.EOF)) 
            If DateDiff("d", (Conditions_peds_cardio.Fields.Item("Day").Value), this_day_peds_cardio)=0  Then
%>
                <span class="daily_condition <%=(Conditions_peds_cardio.Fields.Item("ryg").Value)%>">
                    <span style="display: none;"><%=(Conditions_peds_cardio.Fields.Item("aoc").Value)%></span>
                    <%=(Conditions_peds_cardio.Fields.Item("ryg").Value)%>
                    <span class="reason"><%=(Conditions_peds_cardio.Fields.Item("reasoning").Value)%></span>
                </span><!-- /.daily_condtion -->
<%
                this_day_peds_cardio = DateAdd("d", 1, this_day_peds_cardio)
            Else 
                While DateDiff("d", (Conditions_peds_cardio.Fields.Item("Day").Value), this_day_peds_cardio)<>0
%>  
                    <span class="daily_condition GREEN">GREEN</span><!-- SPACER -->
<%
                    this_day_peds_cardio = DateAdd("d", 1, this_day_peds_cardio)
                Wend
%>
                <span class="daily_condition <%=(Conditions_peds_cardio.Fields.Item("ryg").Value)%>">
                    <span style="display: none;"><%=(Conditions_peds_cardio.Fields.Item("aoc").Value)%></span>
                    <%=(Conditions_peds_cardio.Fields.Item("ryg").Value)%>
                    <span class="reason"><%=(Conditions_peds_cardio.Fields.Item("reasoning").Value)%></span>
                </span><!-- /.daily_condtion -->

<%
                this_day_peds_cardio = DateAdd("d", 1, this_day_peds_cardio)
            End if

            Repeat_peds_cardio__index=Repeat_peds_cardio__index+1
            Repeat_peds_cardio__numRows=Repeat_peds_cardio__numRows-1
            Conditions_peds_cardio.MoveNext()
        Wend

        While loop_ctr_peds_cardio < 14
%>
            <span class="daily_condition GREEN">GREEN</span><!-- FILLER -->
<%
            loop_ctr_peds_cardio = loop_ctr_peds_cardio +1
        Wend
%>
    </div><!-- /#cond_holder -->
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-21 23:34:41

当我阅读你的源代码时,我想到了两个想法:

  1. 你使用了太多的脚本标记(<% %>),甚至用来分隔vbscript代码。这种过度使用会使您的代码难以阅读和理解。我不得不将你的源代码粘贴到Notepad++中来整理和阅读你的代码。
  2. 您没有为第一个while查询使用记录集。如果希望遍历Selectquery的结果,请使用记录集对象。它更便于处理和防止一些常见的错误。使用记录集是否可以消除错误?

针对您的问题:

您是否使用IIS6.0或更高版本?如果是这样,那么下面的想法可能会有所帮助(我是从一个德国人那里学到的!微软的网站,发布在stackoverflow.com (请参阅here)。这些想法是:

在页面上或整个站点上使用Response.Flush()

  • Turn
  • off。在页面顶部的任何ASP之前查看缓冲区的大小(参见'see code.
  • Increase‘position).
  • Decrase Response.Buffer = False size of Response.Buffer = False your response。
票数 0
EN

Stack Overflow用户

发布于 2011-12-22 00:20:01

您的响应缓冲区溢出的原因是您现在有更多的数据要显示。排序的最快方法应该是在while循环中每隔几行发出一个Response.Flush (取决于响应缓冲区的大小)。关闭响应缓冲区几乎总是会导致页面需要更长的渲染时间,特别是当您有很多上下文切换时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8591834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档