5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:
性别:秘密
最后登录:2007-04-12
http://zheman.5d.cn/
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2005/06/06 | 在将 Response.buffer(在 ASP 中)设置为 False 时 TCP/IP 连接中断
类别(Know)
|
评论
(1)
|
阅读(502)
|
发表于 14:43
在将 Response.buffer(在 ASP 中)设置为 False 时 TCP/IP 连接中断
问:
我们的 IIS 6 服务器上运行一个 ASP 应用程序,它负责向我们的用户“间歇性”发送重要的信息。我们希望用户能够在信息可用时立即获取它们,而不必等待 ASP 页完成。为了在 IIS 5 上实现这个目的,我们在 ASP 中将 Response.buffer 属性设置为 False。但我们注意到,在 IIS 6 中这样设置会使客户端的 TCP/IP 连接中断,并导致应用程序出现不可预知的情况。
答:
有的读者可能并不熟悉 ASP (Active Server Pages) 中的 Response.buffer;Response.buffer 是一个属性,如果将它设置为 True(IIS 5 和 6 中的默认设置),则导致 ASP 将脚本执行结果推迟到整个 ASP 页都已运行后再发送。在少数应用程序中,如果将 response.buffer 设置为 True,则会给人应用程序运行速度慢的错觉,因为在整个页面完成之前,不会向用户发送任何信息。某些类型的代码会出现这种情况,例如,长期运行的页面或包含从数据源检索数据并返回信息的循环的页面。对于这些问题,一种可行的解决方法是将 Response.buffer 设置为 False。这样,用户可在信息产生时就会看到它,而不必等待整个页面运行完毕。
我想非常明确地指出,由于将 Response.buffer 设置为 False 而使用户受益的情况并不多见。在您做出这种无奈之举之前,应当想方设法地尝试使用 Response.Flush 方法来达到此目的,该方法可以在应用程序有用户需要立刻获得的信息时(但页面处理尚未完成)将内容推送到客户端。通过使用 Response.Flush,您可以将缓冲功能保持启用状态,并精确控制将响应缓冲内容发送到客户端的时间。
说了这么多,您反映的问题(Response.buffer 为 False 时,客户端 TCP/IP 连接中断)实际上是 IIS 6 中的一个错误。正常情况下,TCP/IP 连接不会中断,您可以使用产品支持服务 (PSS) 提供的更新来修复这个错误,有关详细信息,请参阅
support.microsoft.com/default.aspx?scid=kb;EN-US;834027
(也可以在 Windows Server 2003 SP1 发布时安装它来修复该错误)。
有关使用 ASP.net 时针对上述主题的讨论,请参阅
msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt06.asp
。该修补程序只适用于使用 ASP 时的情况,并不适用于 ASP.net。
0
评论
Comments
日志分类
首页
[271]
Life
[195]
Music
[24]
Know
[23]
Photo
[17]
Service
[7]
English
[5]