我需要將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服務器。如果我需要查看舊的設置,我應該查找哪些文件?
只是一個猜測,但可能與在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
Leigh,非常感謝你。這正是它的原因。設置爲1後,WSDL格式看起來與ColdFusion 8版本相同。 – Ryan
不客氣。默認版本的更改通常會導致從舊版本遷移時出現問題。很高興它再次工作。 – Leigh