2011-04-07 28 views
0

我們試圖從我們的CF框中使用ASP.NET Web服務並且遇到奇怪的問題。無法使用ColdFusion中的.NET Web服務MX

<cfinvoke webservice="http://myserver.mine.com/myservice.asmx?WSDL" method="ImportData" returnvariable="ImportDataCompleted"> 
<cfinvokeargument name="importJobName" value="job1"> 
<cfinvokeargument name="force" value="false"> 

如果我們運行這個從版本9中,它會工作得很好,但是,當我在MX上運行,我得到以下錯誤:

Could not perform web service invocation "ImportData" because AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}VersionMismatch faultSubcode: faultString: Possible SOAP version mismatch: Envelope namespace http://www.w3.org/2002/12/soap-envelope was unexpected. Expecting http://schemas.xmlsoap.org/soap/envelope/ . faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}VersionMismatch faultSubcode: faultString: Possible SOAP version mismatch: Envelope namespace http://www.w3.org/2002/12/soap-envelope was unexpected. Expecting http://schemas.xmlsoap.org/soap/envelope/ . faultActor: faultNode: faultDetail: Possible SOAP version mismatch: Envelope namespace http://www.w3.org/2002/12/soap-envelope was unexpected. Expecting http://schemas.xmlsoap.org/soap/envelope/ . at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:260) at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:169) at org.ap...

我有清除管理員中的Web服務,他們重新填充,但仍然是錯誤。有任何想法嗎?!

回答

2

看起來發生了這種情況,因爲您使用的MX版本正在運行SOAP 1.1,ColdFusion 9正在運行SOAP 1.2。 (注意:在錯誤的文字:可能的SOAP版本不匹配

我不熟悉SOAP,但它看起來像有一些你可能想要了解兩者之間some other differences。有一個related question,表明早期版本的CF,至少,不(或不)支持1.2。

+1

一些更多的挖掘給我們帶來了這個結論。我們還發現了一些引用每個服務器端loanguauge使用什麼版本的肥皂(當我再次找到時我會發布) – Limey 2011-04-11 17:31:44

0

如果您使用的是ColdFusion MX 6.1,那麼您將無法使用cfinvoke標記使用Web服務。 Adobe/Macromedia的工程師直到CFMX 7才提供該功能。

您將被要求使用Java存根。看到這個link

創建存根後,需要使用Java 1.4進行編譯(可以使用ColdFusion的內部jdk來完成)。然後,創建一個jar文件並將其部署到您的ColdFusion實例中,通常爲./runtime/lib/。重新啓動ColdFusion並使用CFObject創建一個對象。然後使用剛剛創建的Java對象調用Web服務的方法。