Cf10 не может добавить текст в HTML Head

На странице, которую мы загружаем, появляется следующая ошибка:

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 отлично работает в других частях нашего приложения, он просто кажется на этой странице.

Единственное, что действительно отличается от этой страницы, это то, что это особенно длинная страница.

Ответ 1

Если это особенно длинная страница, то CF может просто промывать буфер самостоятельно. Если вы зарегистрируете CFAdmin, на странице настроек есть параметр для Максимальный размер буфера вывода. Я считаю, что по умолчанию 1024 КБ. Если ваша страница превышает 1 мегабайт контента, CF может сбросить буфер до тэга <cfhtmlhead />. Попробуйте увеличить размер буфера или изменить размещение тега <cfhtmlhead />, чтобы узнать, исправляет ли он проблему.

Ответ 2

В последнее время я столкнулся с той же проблемой, но поведение не было предсказуемым. Я считаю, что ответ Дэна Красного правилен. Я создал несколько тестовых страниц, чтобы увидеть, могу ли я воспроизвести проблему. Каждый раз, когда TestTemplate.cfm включен, CFHTMLHEAD записывает простое оповещение JavaScript в тег заголовка. После того, как буфер достигнут, и страница будет автоматически сброшена, любое последующее использование тега CFHTMLHEAD приведет к ошибке, в частности, ошибке в исходном сообщении. Как указывает Дэн, вы можете обойти эту проблему, изменив максимальный размер выходного буфера.

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!');

Ответ 3

Чтобы исправить это, войдите в Coldfusion Admin, перейдите в Memory Variables и снимите флажок "Отключить обновление внутренних файлов cookie Coldfusion, используя теги/функции Coldfusion". Сохраните настройки и перезапустите веб-сайт.