2010-11-16 10 views
2

J'essaie de consommer le service web .net de la fusion à froid. Les méthodes ayant des types simples fonctionnent bien. Mais j'ai des problèmes avec une méthode particulière qui accepte le tableau byte [] en entrée.erreur de service Web: opération avec les paramètres ne peut pas être trouvé

Ci-dessous l'échantillon déclaration webmethod

[WebMethod] 
    public AVStatus ScanStream(byte[] fileObject) 
    { 
       // code 
    } 

et le code de la fusion à froid consommer ce service est

<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> 

Cela conduit toujours à cette erreur opération service Web ScanStream avec des paramètres ne peut être trouvé.

Quelqu'un peut-il m'aider?

Répondre

2

Il semble que les données binaires a été exposé sous forme de chaîne bas64 dans le coldfusion tandis que byte[] est exposé par le service comme un tableau XML (d'octets). Changez le ScanStream (si vous le pouvez) pour accepter une chaîne, si le service Web n'est pas le vôtre, vous pouvez convaincre les propriétaires de fournir une autre méthode qui accepte la chaîne et utilise Convert.FromBase64String pour passer au tableau d'octets.

+0

Merci mon pote ... c'est le problème exact .... :) – RameshVel

+0

Super! Heureux d'aider. – Aliostad

0

Les services Web sont distants et non publics. Le public permet l'accès par d'autres classes et pages des FC. Changez de public à distant, et vous devriez être capable de "voir" votre webservice.