【发布时间】:2013-07-16 04:05:13
【问题描述】:
我从 CFThread 收到一个奇怪的错误。我将它包裹在一个在 CFThread 之外可以完美运行的函数上。但是,它需要大约 20 秒才能完成,所以我将其发送到 CFThread,然后 CFLocation 将用户转到一个新页面,并在完成时提醒他们。
它也包含在 CFTRY 中,如果有问题可以给我发电子邮件。
我收到了 CFCATCH.Message 所在的电子邮件:
“CFThread 未能设置响应头,因为请求已经完成”
我在 Google 上找不到对此类错误的任何引用。我假设它不喜欢我在调用线程后直接使用 CFLocation 的事实。所以,为了它,我尝试使用 META REFRESH 来重定向用户。同样的错误结果。
有什么想法吗?
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">
【问题讨论】:
-
您能否发布一些代码,以便我们自己重现该问题?
-
另外,请查看 CF 生成的异常日志,因为这可能会指向一行代码。此外,使用 Fiddler 或 Chrome 开发工具,在 CFTHREAD 之外运行函数时查看 HTTP 响应,看看是否设置了任何其他标头
-
我用代码更新了帖子。我还查看了日志,找不到任何与此错误相关的内容。
-
cflocation 仅在代码中的线程之后 - 线程与它异步运行(并且可能在它执行后完成,因此在响应被发回之后);这是无关紧要的,不是原因。
-
错误信息非常明确,似乎是 Henry 所说的,所以请查看
buildReport内部 - 它将包含(或调用其他包含)cfheader 或其他 cflocation 的代码尝试设置 HTTP 标头的其他等效构造。
标签: coldfusion header response cfthread