2017-03-06 82 views
1

我需要將Web服務從舊的ColdFusion 8服務器(從SQL 2005運行)移動到新的ColdFusion 2016(從SQL 2016運行)。Data Object()()

的web服務,只是被編碼這樣一個基本的.CFC文件:

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

使用Web服務供應商我是收到此錯誤:

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

問題似乎是ColdFusion 8服務顯示:

data() As Object() 

但新的ColdFusion 2016顯示:

data() As Object()() 

我不知道ColdFusion在哪裏設置對象,因爲我認爲所有內容都包含在.CFC文件中。我並不是非常高級的ColdFusion,所以任何幫助表示讚賞。

任何想法爲什麼extra()顯示在Object()上?我將如何去調查這個?

注意:ColdFusion 8服務器上有一個完整的內部編碼網站,上面有一個Application.cfm文件等,我沒有複製到ColdFusion 2016服務器。如果我需要查看舊的設置,我應該查找哪些文件?

+0

只是一個猜測,但可能與在CF10 +中切換到Axis2有關。新的Web服務現在默認爲wsversion = 2。嘗試在CF Admin中將其切換回wsversion = 1並查看是否有任何更改。另見http://blogs.coldfusion.com/post.cfm/coldfusion-10-webservices-axis2-vs-axis1和http://www.adobe.com/devnet/coldfusion/articles/axis2-web-services。 html – Leigh

+0

Leigh,非常感謝你。這正是它的原因。設置爲1後,WSDL格式看起來與ColdFusion 8版本相同。 – Ryan

+0

不客氣。默認版本的更改通常會導致從舊版本遷移時出現問題。很高興它再次工作。 – Leigh

回答

1

(從評論)

只是一個猜測,但可能會涉及到switch to Axis2 in CF10+。新的Web服務現在默認爲wsversion=2。在遷移舊代碼時,這往往會導致問題,而這些代碼會出現舊的Axis1行爲。嘗試在CF管理員中將Web服務切換回wsversion=1,並查看是否解決了該問題。

有關在應用程序和組件級別設置版本的其他方法,請參見Using Axis2 web services with ColdFusion 10

+0

幸運的猜測;)ha –

+0

@ Miguel-F - 嘿,當談到升級Web服務時,不需要太多的猜測。 *「Axis2破壞了它!」* ;-) – Leigh

相關問題