Web服务错误:无法找到带参数的操作

时间:2010-11-16 13:54:41

标签: c# web-services coldfusion

我正在尝试使用冷融合的.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

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

似乎二进制数据已在coldfusion中公开为bas64字符串,而服务将byte[]公开为XML数组(字节数)。

更改ScanStream(如果可以)接受字符串,如果Web服务不是您的,您可以说服所有者提供另一种接受字符串并使用Convert.FromBase64String更改为字节数组的方法。

答案 1 :(得分:0)

Web服务是远程的,而不是公共的。 Public允许其他CF类和页面访问。将公共更改为远程,您应该能够“看到”您的Web服务。