If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
下面是摘抄的一段
在进入长时运算之前使用Resonse.IsClientConnected
如果用户感到不耐烦,他们可能在ASP页面计算他们的请求之前离开这个页面。如果他们点击刷新或是跳到服务器上的另一个页面,新的请求将位于ASP请求队列尾部,而中断的请求却在请求队列的中部;通常服务器在高负载情况下可能发生这种情况(服务器有很长的请求队列,同时请求次数也很多);而这种情况又使服务器的负载情况变得更加恶劣。如果用户已经断掉连接,没有必要再执行这个ASP页面(尤其当这是一个很慢、很耗资源的页面时);Response.IsClientConnected属性能检查出这种情
况;如果属性返回False,就应该调用Resonse.End来结束剩余的页面。事实上,
IIS 5.0使这种检查规律划--无论什么时候ASP准备执行一个新的请求,他先检查请求队列有多长;如果队列已经超过3秒钟,ASP就会检查客户端是否连接;如果客户端已经断开,ASP立即终止这个请求。可以使用AspQueueConnectionTestTime设置来调整3秒的超时。
如果有一个非常耗时的页面要执行,也可以在页面中检查
Response.IsClientConnected。当响应缓冲打开时,在页面运行中使用
Response.Flush也能给用户操作正在执行的感觉。
注意:在IIS 4.0上,除非你先执行了Response.Write,否则
Response.IsClientConnected的结果有可能不正确;如果响应缓冲已经打开,还必须先执行Response.Flush。在IIS 5.0上,就没有这个必要了,
Response.IsClientConnected工作得很正常。无论任何情况,
Response.IsClientConnected总要消耗一些时间,因此,只应该在执行耗时至少超过500ms的页面中执行。首要原则是,不要在一个紧密的循环中反复调用这个属性。
直接设置10秒自动关闭不就得了
本来用了response.end是不会再把后面内容输出的,你这种情况可能是你把这个句子放在了if……end if之间,而end if后面还有代码,才造成的。如果是的话,就得试着改变语句结构了。另外,前一位朋友说的“response.end只是中断了服务器端程序的运行”这是不对的,它可以让ASP程序不再向客户端输出任何内容。除非你把response.end用别的结构化句型包围了,如if……end if等。
调试步骤如下:(1) IIS启用调试1. 计算机管理-服务和应用程序-Internet信息服务-网站-默认网站-属性2. 主目录-应用程序配置-调试3. 启用ASP服务器脚本调试(2)在需要中断调试的ASP脚本行里添加一行stop(3)在浏览器里访问该脚本,由于iis在解析脚本时遇到stop命令就会中断抛出异常,此时会弹出窗口要求你选择调试器可选择visual studio 2008/2005,然后提示附加到dllhost进程,选择附加,则visual studio就会弹出窗口显示代码,光标断点显示在stop语句行,这时便可以开始单步调试了。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)