2009-07-27/22:09
响应对象 错误 'ASP 0156 : 80004005'
标题错
go.asp, 行10
HTTP标题已经写入到客户浏览器。任何HTTP标题的修改必须在写入页内容之前。
上面的错误信息是否曾困扰过你?(蜘蛛精:是否曾让你抓耳挠腮,彻夜难眠,最后
不得不以头撞墙而终?鄙人便饱受其害,至今仍为其消得人憔悴。)
<%response.buffer=true%>
上句须加在所有通过redirect调用HTML文档的代码之前.这一句可以让浏览收到HTTP
标题已被写入的信息。通常一个页面含有标题--or-- 。
如果浏览器在写文本,你不能再用response.redirect来写文本,鱼和熊掌不可兼
得。
<%response.buffer=true%>
它告诉浏览器不到写任何内容,直到:
a) response.end 中止页面操作
b) response.flush 开始执行
c) 100% of the page is executed 页面操作完全执行完
d) response.redirect命令已发出,response.flush不再传送任何内容或文本。
<%response.buffer=true%> 的唯一反馈是如果页面正在进行长时间地处理(如处理
有上千数据的数据库时),只有等到所有该处理的内容完成后,才可以出现期待的页
面。通常人们会认为浏览死住了,为此
response.flush
可以让人们逐步地看到处理过的页面。因此,我们说BUFFER=true和flushing是产生
速度的理想方法。
/advice/whybuffer.asp
<%response.buffer=false%>
<html><head>
<title>dailystuff.asp</title>
</head>
<body>
<%
whatweekday=Weekday(now())
select case whatweekday
case vbSunday
response.redirect "http://www.cnn.com"
case vbMonday
response.redirect "http://www.activeserverpages.com"
case vbTuesday
response.redirect "http://www.aspalliance.com"
case vbWednesday
response.redirect "http://www.aspconvention.com"
case vbThursday
response.redirect "http://www.aspmagazine.com"
case vbFriday
response.redirect "http://www.dilbert.com"
case vbSaturday
response.redirect "http://www.movielink.com"
end select
%>
</body>
</html>
下面是修改后的代码,执行时不会出现出错信息。
<%response.buffer=true%>
<html><head>
<title>dailystuff.asp</title>
</head>
<body>
<%
whatweekday=Weekday(now())
select case whatweekday
case vbSunday
response.redirect "http://www.cnn.com"
case vbMonday
response.redirect "http://www.activeserverpages.com"
case vbTuesday
response.redirect "http://www.aspalliance.com"
case vbWednesday
response.redirect "http://www.aspconvention.com"
case vbThursday
response.redirect "http://www.aspmagazine.com"
case vbFriday
response.redirect "http://www.dilbert.com"
case vbSaturday
response.redirect "http://www.movielink.com"
end select
%>
</body>
</html>