2017-03-06 4 views
1

Ich muss einen Webdienst von einem alten ColdFusion 8-Server (ausgeführt von SQL 2005) zu einem neuen ColdFusion 2016 (ausgeführt von SQL 2016) verschieben.Data Object()()

Der Webservice ist nur eine grundlegende .cfc Datei, die wie folgt codiert:

<cfcomponent output="false"> 
    <cffunction name="getinfo" 
       returntype="query" 
       output="no" 
       access="remote"> 

     <cfargument name="variable1" type="string"> 
     <cfargument name="variable2" type="string"> 
     <cfargument name="variable3" type="string"> 

      <cfquery name="qryName" datasource="database_name"> 
       select columns from table 
      </cfquery> 

     <cfreturn qryName> 
    </cffunction> 
</cfcomponent> 

Mein Anbieter des Web-Service mit diesem Fehler empfängt:

Unable to generate a temporary class (result=1). 
error CS0266: Cannot implicitly convert type 'object' to 'object[]' 

Das Problem scheint zu sein, dass Coldfusion 8-Dienst wurde zeigt:

data() As Object() 

Aber die neue Coldfusion 2016 zeigt:

Ich habe keine Ahnung, wo ColdFusion das Objekt überhaupt setzt, da ich dachte, dass alles in der .CFC-Datei enthalten ist. Ich bin nicht sehr fortgeschritten mit ColdFusion, daher wird jede Hilfe geschätzt.

Eine Idee, warum die extra() auf dem Objekt() angezeigt wird? Wie würde ich das untersuchen?

Hinweis: Der ColdFusion 8-Server verfügte über eine vollständig intern codierte Website mit einer Application.cfm-Datei usw., die ich nicht auf den ColdFusion 2016-Server kopiert habe. Wenn ich nach dem alten Setup schauen muss, nach welchen Dateien sollte ich suchen?

+0

Nur eine Vermutung, aber könnte mit dem Wechsel zu Axis2 in CF10 + verwandt sein. Neue Webdienste haben jetzt standardmäßig den Wert wsversion = 2. Versuchen Sie, es im CF-Admin auf wsversion = 1 zurückzusetzen, und sehen Sie nach, ob sich etwas geändert hat. Siehe auch http://blogs.coldfusion.com/post.cfm/coldfusion-10-webservices-axis2-vs-axis1 und http://www.adobe.com/devnet/coldfusion/articles/axis2-web-services. html – Leigh

+0

Leigh, vielen Dank. Genau das war es. Nach dem Festlegen von 1 sah das WSDL-Format identisch mit der ColdFusion 8-Version aus. – Ryan

+0

Gern geschehen. Die Änderung der Standardversion verursacht normalerweise Probleme bei der Migration von einer älteren Version. Froh, dass es wieder funktioniert. – Leigh

Antwort

1

(Aus den Kommentaren)

Nur eine Vermutung, aber vielleicht mit den switch to Axis2 in CF10+ in Beziehung gesetzt werden. Neue Webdienste sind jetzt standardmäßig auf wsversion=2 eingestellt. Dies führt oft zu Problemen bei der Migration von älterem Code, der das alte Verhalten von Axis1 erwartet. Versuchen Sie, den Web-Dienst im CF-Administrator zurück auf wsversion=1 zu schalten und sehen Sie, ob das das Problem behebt.

Weitere Möglichkeiten zum Festlegen der Version auf Anwendungs- und Komponentenebene finden Sie unter Using Axis2 web services with ColdFusion 10.

+0

Lucky rate;) ha –

+0

@ Miguel-F - Heh, wenn es darum geht, Web-Services zu aktualisieren nicht viel raten erforderlich. * "Axis2 hat es kaputt gemacht!" * ;-) – Leigh

Verwandte Themen