这应该不难回答,但我发现的讨论和文档可能相当不清楚。
首先,关于我的设置的一些信息:
我在托管环境中,通过我们的 ColdFusion 管理员组可能会很耗时。因此,我使用 restInitApplication函数来注册我的 RESTful Web 服务。
我的 webroot 文件夹(我的Application.cfm所在的位置)位于“E:\docs\wwwroot”中。我只能从 wwwroot 下查看、添加、编辑文件夹/文件。我不知道“e:\docs”中有什么。我相信在上面我看不到还有另一个Application.cfm设置诸如 serverType(开发、登台或生产)之类的东西,我们(以及托管在此服务器上的其他 ColdFusion 站点)在我们的应用程序的各个地方使用代码。
我的pdfRestfulAPI.cfc(包含我的 web 服务功能的组件)在这个文件夹中,“e:\docs\wwwroot\RESTservices”。我的组件代码如下所示:
<cfcomponent rest="true" >
<cffunction name="pdfconvert" access="remote" returntype="binary"
output="false" produces="application/xml" method="get" >
<cfargument name="sourceWebPageURL" type="string" >
<cfset pdfDoc = "" >
<cfdocument name="pdfDoc"
format="PDF"
src="#sourceWebPageURL#"
saveAsName="sample.pdf" >
</cfdocument>
<cfreturn #pdfDoc#>
</cffunction>
</cfcomponent>
函数本身不是问题。它只是将网页转换为 pdf——传递一个 URL,获取该网页的 PDF 版本。当我将它设置为非 RESTful API (SOAP/xml) 时,它工作得很好。
在我的 Application.cfm 中,我尝试使用以下代码注册我的 Web 服务:
<cfset restInitApplication( getDirectoryFromPath(getCurrentTemplatePath())
& "RESTservices" ) >
这给了我一个“E:\docs\wwwroot\RESTservices”的 dir_path 属性,这对我来说似乎是正确的。我省略了可选的 mapping_name 属性。当文档说这“可以是任何东西”时,这是没有帮助的。
我在 Application.cfm 中得到的错误是:
Coldfusion.rest.RestAppAdapter$InvalidApplicationException:找不到路径 E:\docs\wwwroot\RESTservices 的映射
希望我已经以这样一种方式列出了细节,任何人都可以尝试这个并让我知道我做错了什么。
感谢大家!