首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion - CFThread无法设置标头?

ColdFusion - CFThread无法设置标头?
EN

Stack Overflow用户
提问于 2013-07-06 05:04:05
回答 2查看 321关注 0票数 0

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

它还封装在CFTRY中,以便在出现问题时给我发电子邮件。

我收到了CFCATCH.Message所在的邮件:

"CFThread无法将标头设置为响应,因为请求已完成“

我在谷歌上找不到任何关于这种错误的信息。我假设它不喜欢我在调用线程之后直接使用CFLocation的事实。所以,最糟糕的是,我尝试使用元刷新来重定向用户。相同的错误结果。

有什么想法吗?

2013年7月8日更新:

代码如下:

代码语言:javascript
复制
<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">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-06 05:25:13

如果你仔细想想,这是有意义的,因为cfthread在响应被发送到客户端之后仍然可以运行。因此,在header中设置新的内容不再有意义,因为“船已经启航了”。

正如你所知道的,CFThread允许你产生一个新的线程,在处理请求的同时进行一些处理。即使在请求完成之后,此线程也可以继续运行。因为这个线程没有连接到产生它的HTTP请求,所以从这个线程执行的任何操作试图更改HTTP请求/响应中的某些内容,比如设置头、cookie、响应代码等,都是没有意义的,也不应该执行。

所以不应该在cfthread中使用cfcookie、cfheader、cfcontent等,因为它们会导致不可预知的行为。

-- Rupesh Kumar, Adobe ColdFusion engineer

票数 5
EN

Stack Overflow用户

发布于 2013-07-16 04:05:14

找到了。我仔细查看了代码,发现其中一个CFDocument标签上面有一个随机的CFHEADER标签。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17496828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档