我正在尝试将在“WSO2数据服务服务器”上创建的服务用于本地.NET客户端(Windows应用程序)。我能够与服务进行通信(我能够列出这些服务提供的操作)。但是当我尝试调用方法时,应用程序会抛出以下错误。
命名空间'XYZ'中的XML元素'ABCD'引用方法和类型。使用WebMethodAttribute更改方法的消息名称或使用更改类型的根元素 XmlRootAttribute。
我刚刚通过visual studio添加了对Windows应用程序的服务引用,并尝试了调用方法
有人可以一步一步地解决上述问题吗?
答案 0 :(得分:0)
当您对数据服务配置中的操作和元素使用相同的名称时会发生这种情况。在添加服务引用时,在VS中创建代理无法区分类型和方法。您可以尝试为数据服务配置中的操作和其他XML属性指定不同的名称吗?如果仍然无效,请发布您的数据服务配置。
答案 1 :(得分:0)
除了为结果集赋予不同的名称之外,还有其他解决方案吗?
如果我在Web服务中有3个方法,并且所有方法都导出相同的方法
然后我觉得将它们重命名为Customers1,Customers2和Customers3是不自然的
以下是我在.NET中导致问题的示例,因为有3种方法都返回了Entries-> Entry
<data name="ws_getSubnoCCInfo" serviceNamespace="com.test.ws">
<config id="tro">
<property name="driverClassName">oracle.jdbc.driver.OracleDriver</property>
<property name="url">jdbc:oracle:thin:xxx/yyy@10.10.10.10:1521/DB</property>
<property name="username">xxx</property>
<property name="password">yyy</property>
</config>
<query id="subnoHasCCSQL" useConfig="tro">
<sql>select case when count(*) > 0 then 'OK' else 'NOK' end hasCC from ccinfo where subno = :subno</sql>
<result element="Entries" rowName="Entry">
<element column="hasCC" name="hasCC" xsdType="string"/>
</result>
<param name="subno" sqlType="STRING"/>
</query>
<query id="idNoHasCCSQL" useConfig="tro">
<sql>select case when count(*) > 0 then 'OK' else 'NOK' end hasCC from ccinfo cc, tabs.crm_departement ui where cc.contrno = ui.contrno and ui.id_no = :id_no</sql>
<result element="Entries" rowName="Entry">
<element column="hasCC" name="hasCC" xsdType="string"/>
</result>
<param name="id_no" sqlType="STRING"/>
</query>
<query id="contrnoHasCCSQL" useConfig="tro">
<sql>select case when count(*) > 0 then 'OK' else 'NOK' end hasCC from ccinfo cc where contrno = :contrno</sql>
<result element="Entries" rowName="Entry">
<element column="hasCC" name="hasCC" xsdType="string"/>
</result>
<param name="contrno" sqlType="STRING"/>
</query>
<operation name="subnoHasCC">
<call-query href="subnoHasCCSQL">
<with-param name="subno" query-param="subno"/>
</call-query>
</operation>
<operation name="idNoHasCC">
<call-query href="idNoHasCCSQL">
<with-param name="id_no" query-param="id_no"/>
</call-query>
</operation>
<operation name="contrnoHasCC">
<call-query href="contrnoHasCCSQL">
<with-param name="contrno" query-param="contrno"/>
</call-query>
</operation>
</data>