响应缓冲区限制超出了经典ASP错误

时间:2014-09-23 15:05:04

标签: asp-classic

我做了一些关于Response Buffer Limit Exceed错误的研究,并且知道我应该使用 Response.Flush()<%Response.Buffer = false%> 在我的asp代码中。

我在我的代码中使用了这个解决方案。这就是这样的页面顶部:

   <%@LANGUAGE="VBSCRIPT" %> 
   <%Response.Buffer = false%> 

在循环中,我在MoveNext之前使用Response.Flush(),例如:

  Response.Flush()      
  rsCustomer.MoveNext

但是我现在遇到的问题是,加载页面需要花费太多时间。那么还有其他解决方案吗?

我只知道的解决方案是增加缓冲区限制大小。在我的配置文件中,我没有任何与bufferesize相关的代码。

更新:代码示例:

  table border="0" cellspacing="0" cellpadding="0" width="100%">
   <tr>
    <td style="padding: 2px;" class="bgmed">
        <strong>Customer</strong>
    </td>
    </tr>

     sSQL = "SELECT "
     sSQL = sSQL & " tbl.[Customer]"
     sSQL = sSQL & " FROM tblCart"sSQL = sSQL & " WHERE"
     sSQL = sSQL & "  tbl.[Name] = 'Test'

      </table>

这是我正在使用的代码示例。调用查询后,我将结果绑定到表。

2 个答案:

答案 0 :(得分:0)

您不能同时使用这两个http://msdn.microsoft.com/en-us/library/ms525560(v=vs.90).aspx。 response.buffer必须为true才能使用response.flush。考虑到MSDN如何声明它会导致运行时错误,我甚至都不知道为什么会这样。

此外,您不应该在循环中使用response.flush。这意味着每次循环结束时您都会向浏览器发送信息。这会导致太多推送到浏览器。

编辑: Lankymart在评论中提到使用循环的mod变体来更频繁地刷新记录。为了OP而将它添加到我的答案中。这就是你要做的事情:

<%
  sSQL = "SELECT "
  sSQL = sSQL & " tbl.[Customer]"
  sSQL = sSQL & " FROM tblCart"sSQL = sSQL & " WHERE"
  sSQL = sSQL & "  tbl.[Name] = 'Test'
  counter = 0
  rs.Open sSql, ConnectionString
%>
table border="0" cellspacing="0" cellpadding="0" width="100%">
  <tr>
    <td style="padding: 2px;" class="bgmed">
      <strong>Customer</strong>
    </td>
  </tr>
  <%
  Do While Not rs.EoF
    counter = counter + 1
  %>
    <tr>
      <td>
        <%= rs.Fields("Customer").value %>
      </td>
    </tr>
  <%
    if counter mod 10 = 0 then
      Response.Flush
    End If
    rs.MoveNext
  Loop
  %>
</table>

答案 1 :(得分:0)

在Dreamweaver中我喜欢这样做,这样就不会晃动......

 </tr>
 <%dim bgcolor, counter
 bgcolor = "#E6E8FF"
 counter = 1 %>
 <% 
 While ((Repeat1__numRows <> 0) AND (NOT rsSearch.EOF)) 
 %>
 <% if counter mod 10 = 0 then
       Response.Flush
      End If %>
      <tr bgcolor="<%=bgcolor%>" onMouseOver="changeto(event, '#ECE9D8')" onMouseOut="changeback(event, '<%=bgcolor%>')">
     <td align="left" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("NAME").Value)%></td>
     <td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ID").Value)%></td>
     <td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("WORK_AREA").Value)%></td>
     <td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("VIP_LOGIN").Value)%></td>
     <td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("ACTIVE").Value)%></td>
     <td align="center" valign="middle" nowrap="nowrap"><%= DoDateTime((rsSearch.Fields.Item("LAST_LOGIN_DATE").Value), 1, 1033) %></td>
     <td align="center" valign="middle" nowrap="nowrap"><%=(rsSearch.Fields.Item("EMAIL_ADDRESS").Value)%></td>
   </tr>
   <%counter = counter + 1%>
   <% 
   Repeat1__index=Repeat1__index+1
   Repeat1__numRows=Repeat1__numRows-1
   rsSearch.MoveNext()
 Wend
 %>
 </table>
 <br />
相关问题