ColdFusion 10 REST API:返回文件时调用站点范围的错误处理程序(AbortException)

ColdFusion 10 REST API:返回文件时调用站点范围的错误处理程序(AbortException),api,rest,coldfusion,coldfusion-10,Api,Rest,Coldfusion,Coldfusion 10,我正在使用ColdFusion 10的新RESTAPI。在其中一个端点,我将返回如下文件: <cffunction name="getFil" access="remote" httpmethod="GET" restpath="{id}/fil" returntype="void"> <cfargument name="id" required="true" restarg

我正在使用ColdFusion 10的新RESTAPI。在其中一个端点,我将返回如下文件:

<cffunction name="getFil"
            access="remote"
            httpmethod="GET"
            restpath="{id}/fil"
            returntype="void">
    <cfargument name="id" required="true" restargsource="path" type="numeric" />

        <cfprocessingdirective suppresswhitespace="no">
            <cfheader name="Content-Disposition" value="attachment; filename=foo.pdf" />
            <cfheader name="Content-Type" value="application/pdf"> 
            <cfcontent file="C:/some_path_to_file/foo.pdf" deletefile="no" />
        </cfprocessingdirective>

</cffunction>
[coldfusion.runtime.AbortException : null] null <br>The error occurred on line 124.

它工作正常,响应为200 OK,然后是响应正文中的文件。即使响应正常,也会调用站点范围的错误处理程序,错误消息如下所示:

<cffunction name="getFil"
            access="remote"
            httpmethod="GET"
            restpath="{id}/fil"
            returntype="void">
    <cfargument name="id" required="true" restargsource="path" type="numeric" />

        <cfprocessingdirective suppresswhitespace="no">
            <cfheader name="Content-Disposition" value="attachment; filename=foo.pdf" />
            <cfheader name="Content-Type" value="application/pdf"> 
            <cfcontent file="C:/some_path_to_file/foo.pdf" deletefile="no" />
        </cfprocessingdirective>

</cffunction>
[coldfusion.runtime.AbortException : null] null <br>The error occurred on line 124.
[coldfusion.runtime.AbortException:null]null
错误发生在第124行。
客户端从未看到错误,但我的电子邮件服务会在调用站点范围的错误处理程序时向开发人员发送通知电子邮件。有人知道这种异常是什么以及如何防止它吗?

我怀疑是某些停止处理的CFML标记(如本例中的
)似乎在使用
代码来执行此操作。我记不起现在该如何重新编程了,但是
确实在引擎盖下引发了一个异常(而且
异常中止
听起来不错),但是ColdFusion在很大程度上抑制了它。REST请求不使用与普通CF请求相同的servlet,所以可能它不太擅长抑制它

如果(出于测试目的,暂时)删除
,我希望不会发生异常


我觉得我对这里的一些细节有点含糊不清,但我现在还不能对它进行彻底的测试。很抱歉。当我有时间的时候,我会努力把事情弄清楚,听起来更加明确。

我无法反驳亚当的答案,因为它似乎是有道理的。也许只要捕捉到那个特定的错误(如果可以的话)并抑制邮件就足够了。但我做了一些搜索,可能找到了一种不同的方法,你可以尝试。不要使用
标记,只需从您的服务返回PDF的实际二进制数据即可。请参阅此博客文章:

不要担心node.js引用,因为给定的示例没有使用它。它们也只是链接到node.js示例

在他们的示例中,他们正在将数据传递给服务,但对于您来说,读取PDF文件并返回该数据应该很简单