我正在尝试使用冷融合的.net webservice。方法简单,工作正常。但我遇到一个接受byte []数组作为输入的特定方法的问题。
示例webmethod声明下面
[WebMethod]
public AVStatus ScanStream(byte[] fileObject)
{
// code
}
和使用此服务的冷融合代码是
<cffile action="readBinary" file="#FileName#" variable="filedata">
<cfset b64file = #toBase64(filedata)#>
<cfinvoke webservice = "http://xxx/scanservice.asmx?wsdl"
method = "ScanStream"
returnVariable = "result">
<cfinvokeargument name="fileObject" value="#b64file#" />
</cfinvoke>
这总是导致此错误无法找到参数的Web服务操作ScanStream 。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
似乎二进制数据已在coldfusion中公开为bas64
字符串,而服务将byte[]
公开为XML数组(字节数)。
更改ScanStream
(如果可以)接受字符串,如果Web服务不是您的,您可以说服所有者提供另一种接受字符串并使用Convert.FromBase64String
更改为字节数组的方法。
答案 1 :(得分:0)
Web服务是远程的,而不是公共的。 Public允许其他CF类和页面访问。将公共更改为远程,您应该能够“看到”您的Web服务。