我在正在加载的页面上收到以下错误:
coldfusion.runtime.CfErrorWrapper
Unable to add text to HTML HEAD tag.
[empty string]
caused by
Template
Unable to add text to HTML HEAD tag.
ColdFusion was unable to add the text you specified to the output stream. This is probably because you have already used a CFFLUSH tag in your template or buffered output is turned off.
我已经扫描了我们的应用程序中包含的所有文件,但找不到任何使用CFFlush的文件。
所有cfcs和组件的输出都设置为“no”。我也尝试在文件中添加cfsetting showdebugoutput = no。这没有用。我在cfadmin中打开了请求调试,但没有帮助。
HTML Head在我们的应用程序的其他部分工作得很好,它似乎就在这一页上。
这个页面唯一真正不同的是它是一个特别长的页面。
答案 0 :(得分:15)
如果它是一个特别长的页面,那么CF可能会自己刷新缓冲区。如果您在设置页面上检查CFAdmin,则会设置最大输出缓冲区大小。我相信默认值是1024 KB。如果您的页面超过1兆内容,则CF可能会在<cfhtmlhead />
标记运行之前刷新缓冲区。尝试增加缓冲区大小,或更改<cfhtmlhead />
标记的位置,看看是否能解决问题。
答案 1 :(得分:1)
我最近遇到了同样的问题,但行为无法预测。我相信Dan Short的回答是正确的。我创建了一些测试页面,看看我是否可以重现这个问题。每次包含TestTemplate.cfm时,CFHTMLHEAD都会向head标记写一个简单的JavaScript警报。一旦达到缓冲区,并且页面被自动刷新,任何后续的CFHTMLHEAD标签使用都将导致错误,特别是原始帖子中的错误。正如Dan指出的那样,您可以通过更改最大输出缓冲区大小来解决此问题。
file:index.cfm
<html>
<head><title>Test Page</title></head>
<body>
<cfset SampleScript = "<script src='sample.js'></script>">
cfset Count = 0>
<cfinclude template="TestTemplate.cfm">
<cfinclude template="TestTemplate.cfm">
<cfinclude template="TestTemplate.cfm">
</body>
</html>
文件TestTemplate.cfm
<cfhtmlhead text="#SampleScript#">
<cfset Count++>
<cfoutput>
<h1>Count #Count#</h1>
</cfoutput>
<cfoutput>
<cfloop from="1" to="100000" index="i">
<cfscript>
j = randRange(i, 1000000);
k = randRange(i, 1000000);
l = j * k;
writeOutput(l);
</cfscript>
</cfloop>
</cfoutput>
file sample.js
alert('Boo!');
答案 2 :(得分:0)
要解决此问题,请登录Coldfusion Admin,转至Memory Variables,然后取消选中“使用Coldfusion标记/功能禁用更新Coldfusion内部Cookie”。保存您的设置并重新启动您的网站。
答案 3 :(得分:0)
server.log
显示了另一个错误,我使用POST请求提交了太多字段。我必须在“设置”页面上增加此限制。