Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ColdFusion-CFThread未能设置标头?_Coldfusion_Header_Response_Cfthread - Fatal编程技术网

ColdFusion-CFThread未能设置标头?

ColdFusion-CFThread未能设置标头?,coldfusion,header,response,cfthread,Coldfusion,Header,Response,Cfthread,我从CFThread得到一个奇怪的错误。我把它包装在一个函数上,当它在CFThread之外时,它可以完美地运行。但是,大约需要20秒才能完成,所以我将其发送到CFThread,然后将用户定位到一个新页面,并在完成时提醒他们 如果有问题,请给我发电子邮件 我收到了CFCATCH的邮件。邮件是: “CFThread未能将标头设置为响应,因为请求已完成” 我在谷歌上找不到类似这样的错误。我假设它不喜欢我在调用线程后直接使用CFLocation。因此,我尝试使用元刷新来重定向用户。同样的错误结果 有什么

我从CFThread得到一个奇怪的错误。我把它包装在一个函数上,当它在CFThread之外时,它可以完美地运行。但是,大约需要20秒才能完成,所以我将其发送到CFThread,然后将用户定位到一个新页面,并在完成时提醒他们

如果有问题,请给我发电子邮件

我收到了CFCATCH的邮件。邮件是:

“CFThread未能将标头设置为响应,因为请求已完成”

我在谷歌上找不到类似这样的错误。我假设它不喜欢我在调用线程后直接使用CFLocation。因此,我尝试使用元刷新来重定向用户。同样的错误结果

有什么想法吗

2013年7月8日更新:

代码如下:

<cfset admsID = replace(createUUID(),"-","","all")>
<cfthread action="run" name="runADMS#admsID#" admsID="#admsID#" formstruct="#form#">
<cftry> 
<cfobject component="cfc.AutoDealerBrandMarketShare" name="adms">
<cfset rptPDF = adms.buildReport(dealer=formstruct.chosenDealer,mkt=formstruct.DMACode,make=formstruct.Make,rptID=admsID)>
<cfcatch type="any">
<cfmail to="pmascari@mysite.com" from="techsupport@mysite.com" subject="ADMS Error">
Error occurred running a Polk Auto Dealer Market Share report.
#cfcatch.Message#
#cfcatch.detail#
</cfmail>
</cfcatch>
</cftry>
</cfthread> 
<cflocation url="http://www.usercanwaithere.com">

运行波尔克汽车经销商市场份额报告时出错。
#cfcatch.Message#
#细节#

仔细想想,这是有道理的,因为cfthread可以在响应发送到客户端后仍在运行。因此,在标题中设置新的内容不再有意义,因为“船已经开航了”

正如您所知,CFThread允许您生成一个新线程来执行一些操作 与请求并行处理。此线程可以继续运行 即使在请求完成后仍运行。因为这个线程不是 连接到生成它的HTTP请求,从 试图更改HTTP中某些内容的线程 请求/响应-如设置标题、cookie、响应代码等 没有意义,也不应该这样做

因此,不应在内部使用CFOOKIE、cfheader、cfcontent等 cfthread,因为它可能导致不可预测的行为


--

仔细想想,这是有道理的,因为cfthread可以在响应发送到客户端后仍在运行。因此,在标题中设置新的内容不再有意义,因为“船已经开航了”

正如您所知,CFThread允许您生成一个新线程来执行一些操作 与请求并行处理。此线程可以继续运行 即使在请求完成后仍运行。因为这个线程不是 连接到生成它的HTTP请求,从 试图更改HTTP中某些内容的线程 请求/响应-如设置标题、cookie、响应代码等 没有意义,也不应该这样做

因此,不应在内部使用CFOOKIE、cfheader、cfcontent等 cfthread,因为它可能导致不可预测的行为



--找到了。仔细搜索代码,在其中一个CFDocument标记上方发现了一个随机的CFHEADER标记。

找到了它。仔细检查代码,在其中一个CFDocument标记上方发现了一个随机的CFHEADER标记。

您能发布一些代码以便我们自己重现问题吗?另外,请查看CF生成的异常日志,因为这可能会指向一行代码。另外,使用Fiddler或Chrome开发工具,在CFTHREAD之外运行函数时查看HTTP响应,并查看是否有任何其他头使用代码更新了post的setI。我还查看了日志,找不到任何与此错误相关的内容。cflocation仅在代码中的线程之后-线程与其异步运行(可能在执行后完成,因此在返回响应后完成);这是不相关的,不是原因。错误消息非常明确,似乎是Henry所说的,因此请查看
buildReport
-它将包含(或调用其他包含的代码)一个cfheader或另一个cflocation或其他试图设置HTTP头的等效构造。您能发布一些代码以便我们自己重现问题吗?另外,请查看CF生成的异常日志,因为这可能会指向一行代码。另外,使用Fiddler或Chrome开发工具,在CFTHREAD之外运行函数时查看HTTP响应,并查看是否有任何其他头使用代码更新了post的setI。我还查看了日志,找不到任何与此错误相关的内容。cflocation仅在代码中的线程之后-线程与其异步运行(可能在执行后完成,因此在返回响应后完成);这是不相关的,也不是原因。错误消息非常明确,似乎是Henry所说的,因此请查看
buildReport
-它将包含(或调用包含)一个cfheader或另一个cflocation或其他试图设置HTTP头的等效构造。用代码更新了帖子。要清楚的是…线程中的代码只是创建一个PDF并将其保存到服务器。它根本不意味着与浏览器交互。我在日志中没有看到与此错误相关的任何内容“它根本不打算与浏览器交互”,但错误表明它正在尝试这样做。既然你说它正在保存一个PDF文件(该信息应该在问题中),我不会感到惊讶,如果有(不正确/不必要的)CFC内容在那里的某个地方。找到了。仔细检查代码,在其中一个CFDocument标记上方发现了一个随机的CFHEADER标记。@PaulMascari很好,请将此标记为正确答案。:)谢谢你用代码给这封信贴上了日期。要清楚的是…线程中的代码只是创建一个PDF并将其保存到服务器。它根本不意味着与浏览器交互。我在日志中没有看到与此错误相关的任何内容“它根本不打算与浏览器交互”,但错误表明它正在尝试这样做。既然你说它正在保存一个PDF文件(该信息应该在问题中),我不会感到惊讶,如果有(不正确/不必要的)CFC内容在那里的某个地方。找到了。仔细检查代码,在其中一个CFDocument标记上方发现了一个随机的CFHEADER标记。@PaulMascari很好,请将此标记为正确答案。:)谢谢