在 C#.Net Windows 应用程序中使用 WSO2 数据服务

本文关键字:WSO2 数据 服务 Net Windows 应用程序 | 更新日期: 2023-09-27 18:33:43

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

来自命名空间"XYZ"的 XML 元素 'ABCD' 引用方法和类型。使用 WebMethodAttribute 更改方法的消息名称,或使用XmlRootAttribute。

我刚刚通过视觉工作室向Windows应用程序添加了服务引用,并尝试调用方法

任何人都可以提供逐步解决上述问题的过程吗?

在 C#.Net Windows 应用程序中使用 WSO2 数据服务

当您对

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

除了为结果集指定不同的名称之外,还有其他解决方案吗?

如果我在 Web 服务中有 3 个方法并且所有方法都导出相同的方法

然后,例如将它们重命名为客户 1、客户 2 和客户 3 对我来说感觉不自然

这是我在 .NET 中导致问题的示例,因为有 3 种方法都返回条目>条目

<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>