【问题标题】:web service error: operation with parameters cannot be foundWeb服务错误:找不到带参数的操作
【发布时间】:2010-11-16 13:54:40
【问题描述】:

我正在尝试从冷融合中使用 .net 网络服务。具有简单类型的方法可以正常工作。但是我在使用一种接受 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

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

【问题讨论】:

    标签: c# web-services coldfusion


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-07-30
        • 2014-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 2020-09-19
        • 1970-01-01
        相关资源
        最近更新 更多