无法在ColdFusion MX中使用.NET Web服务

时间:2011-04-07 14:11:32

标签: web-services coldfusion

我们正在尝试从我们的CF盒中使用ASP.NET Web服务,并且遇到了奇怪的问题。

<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上运行时,我收到以下错误:

  

无法执行Web服务调用&#34; ImportData&#34;因为AxisFault faultCode:{http://schemas.xmlsoap.org/soap/envelope/}VersionMismatch faultSubcode:faultString:可能的SOAP版本不匹配:信封命名空间http://www.w3.org/2002/12/soap-envelope是意外的。期待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:可能的SOAP版本不匹配:信封命名空间http://www.w3.org/2002/12/soap-envelope出乎意料。期待http://schemas.xmlsoap.org/soap/envelope/。 faultActor:faultNode:faultDetail:可能的SOAP版本不匹配:信封命名空间http://www.w3.org/2002/12/soap-envelope是意外的。期待http://schemas.xmlsoap.org/soap/envelope/。 org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:260)位于org.ap的org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:169)...

我已经清除了管理员中的Web服务,但他们确实重新填充了,但仍然是错误。有什么想法吗?!

2 个答案:

答案 0 :(得分:2)

看起来这种情况正在发生,因为您使用的MX版本正在运行SOAP 1.1,而ColdFusion 9正在运行SOAP 1.2。 (请注意错误中的文本:可能的SOAP版本不匹配。)

我不熟悉SOAP,但看起来两者之间有some other differences您可能想要阅读的内容。有related question表明CF的早期版本至少没有(或没有)支持1.2。

答案 1 :(得分: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服务的方法。