0

我正在尝试将在“WSO2 数据服务服务器”上创建的服务消耗到本地 .NET 客户端(Windows 应用程序)中。我能够与服务通信(我能够列出这些服务提供的操作)。但是当我尝试调用方法应用程序时会引发以下错误。

命名空间“XYZ”中的 XML 元素“ABCD”引用了一个方法和一个类型。使用 WebMethodAttribute 更改方法的消息名称或使用 XmlRootAttribute 更改类型的根元素。

我刚刚通过Visual Studio添加了对Windows应用程序的服务引用并尝试了调用方法

任何人都可以逐步解决上述问题吗?

4

2 回答 2

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(*) &gt; 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(*) &gt; 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(*) &gt; 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>
于 2013-02-15T09:47:03.783 回答
0

当您对数据服务配置中的操作和元素使用相同的名称时,就会发生这种情况。当您添加服务引用时,代理在 VS 中创建,无法区分类型和方法。您能否尝试在数据服务配置中为操作和其他 XML 属性提供不同的名称?如果它仍然不起作用,请发布您的数据服务配置。

于 2012-05-17T17:34:51.407 回答