12

我在我们正在加载的页面上收到以下错误:

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 和组件的输出都设置为“否”。我还尝试在文件中添加 cfsetting showdebugoutput = no。那没有帮助。

我在 cfadmin 中打开了请求调试,但没有帮助。

HTML Head 在我们应用程序的其他部分工作正常,它似乎只是在这一页上。

这个页面唯一真正不同的是它是一个特别长的页面。

4

4 回答 4

18

如果它是一个特别长的页面,那么 CF 可能会自行刷新缓冲区。如果您在 CFAdmin 中检查,在设置页面上,有一个设置Maximum Output Buffer size。我相信默认值是 1024 KB。<cfhtmlhead />如果您的页面内容超过 1 兆,那么 CF 可能会在您的代码运行之前刷新缓冲区。尝试增加缓冲区大小,或更改<cfhtmlhead />标记的位置以查看是否可以解决问题。

于 2013-07-08T13:22:26.733 回答
1

我最近遇到了同样的问题,但行为不可预测。我相信 Dan Short 的回答是正确的。我创建了一些测试页面,看看是否可以重现该问题。每次包含 TestTemplate.cfm 时,CFHTMLHEAD 都会向 head 标记写入一个简单的 JavaScript 警报。一旦到达缓冲区并自动刷新页面,任何后续 CFHTMLHEAD 标记的使用都将导致错误,特别是原始帖子中的错误。正如 Dan 所指出的,您可以通过更改最大输出缓冲区大小来解决此问题。

文件: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>

文件 sample.js

alert('Boo!');
于 2014-05-07T18:31:54.770 回答
0

要解决此问题,请登录 Coldfusion 管理员,转到内存变量,然后取消选中“禁用使用 Coldfusion 标签/功能更新 Coldfusion 内部 cookie”。保存您的设置并重新启动您的网站。

于 2017-06-21T06:52:14.637 回答
0

server.log显示另一个错误,即我使用 POST 请求提交了太多字段。我不得不在“设置”页面上增加此限制。

于 2018-08-24T15:53:34.483 回答