Web services ColdFusion 2016中的Web服务不再起作用

Web services ColdFusion 2016中的Web服务不再起作用,web-services,coldfusion,wsdl,axis2,axis,Web Services,Coldfusion,Wsdl,Axis2,Axis,我正在从ColdFusion 9升级到ColdFusion 2016,我的web服务突然停止工作。我相信这是因为轴2是在Cold Fusion 10中引入的,它使我现有的web服务无法运行 即使我在ColdFusion Administrator中将Web服务版本设置回1,它仍然不起作用 我调用这些web服务的方式是使用createObject函数: <cfscript> objSoapHeader = XmlParse("<wsse:Security mustUnd

我正在从ColdFusion 9升级到ColdFusion 2016,我的web服务突然停止工作。我相信这是因为轴2是在Cold Fusion 10中引入的,它使我现有的web服务无法运行

即使我在ColdFusion Administrator中将Web服务版本设置回1,它仍然不起作用

我调用这些web服务的方式是使用
createObject
函数:

<cfscript>
    objSoapHeader = XmlParse("<wsse:Security mustUnderstand=""true"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""><wsse:UsernameToken><wsse:Username>USERNAME</wsse:Username><wsse:Password>PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security>");

    Application.UserWebService = CreateObject("webservice", PATH & "Requests/UserService.asmx?WSDL");
    addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true);

    // Get the .Net resources
    Application.NetResources = Application.UserWebService.GetNetResources(); 

</cfscript>
但是,当查看消息列表时,我可以看到与GetNetResources关联的三条消息:

<wsdl:message name="GetNetResourcesSoapIn">
    <wsdl:part name="parameters" element=tns:GetNetResources"/>
</wsdl:message>
<wsdl:message name="GetNetResourcesSoapOut">
    <wsdl:part name="parameters" element=tns:GetNetResourcesResponse"/>
</wsdl:message>
<wsdl:message name="GetNetResourcesLanguageHeader">
    <wsdl:part name="parameters" element=tns:LanguageHeader"/>
</wsdl:message>
然而,这仍然不能回答我的第二个问题

编辑2

在对代码进行了一些修改之后,我设法通过向web服务调用添加一个变量来解决
RuntimeException

args = {TEST="<locale>en-CA</locale>"};
Application.NetResources = Application.UserWebService.GetNetResources(argumentCollection=args);
据我所知,我假设发送一个
complexType
对象作为参数,该参数包含一个
Locale
字符串

如果是这种情况,我将从CFML发送什么类型的对象?

何时,发送一个
结构作为参数

// Create struct
stLanguageHeader = structNew();
stLanguageHeader.locale = "en-CA";

Application.NetResources = Application.UserWebService.GetNetResources(stLanguageHeader); 

这不是对你问题的回答,但你是否做了
refreshWSDL=true
来验证它不是像缓存那样愚蠢的事情?:)当我尝试使用
cfinvoke
时,它仍然不起作用。只是验证WS对象是否真的是使用版本1(在适当的范围内)重新创建的。我现在无法访问2016年,但总是有可能发生一些变化。很抱歉,我无法提供更多帮助。我相信更改是从ColdFusion 9更改为10,因为它是引入的。如果您有时间,可以通过使用CF10运行代码来确认。只是看看它是否会抛出相同的错误。
args = {TEST="<locale>en-CA</locale>"};
Application.NetResources = Application.UserWebService.GetNetResources(argumentCollection=args);
<wsdl:types>
    <s:schema targetNamespace="http://tempuri.org/" elementFormDefault="qualified">
        <s:element name="LanguageHeader" type="tns:LanguageHeader"/>
        <s:complexType name="LanguageHeader">
            <s:sequence>
                <s:element name="Locale" type="s:string" maxOccurs="1" minOccurs="0"/>
            </s:sequence>
            <s:anyAttribute/>
        </s:complexType>
    </s:schema>
</wsdl:types>
// Create struct
stLanguageHeader = structNew();
stLanguageHeader.locale = "en-CA";

Application.NetResources = Application.UserWebService.GetNetResources(stLanguageHeader);