0

我在 C# .net 中使用输入参数创建了 Web 服务:DataSet

另一方面,我需要从进度 OpenEdge 4GL 10.1(不是 10.2)使用这个网络服务

问题是 OpenEdge 中的数据集无法与 .net 中的数据集匹配。总是在结果中返回 0

我是 C# 程序员,所以对 porgress 没有深入的了解。我在进行中的论坛上进行了研究,但结果不佳。

有什么帮助吗?提前致谢。

*代码* * ***

//网络服务:C# .net

[webmethod]

public int getResult(DataSet ds)
{

  DataTable tbl = ds.Tables["datas"];

  int result=0;

  foreach (DataRow dr in tbl.Rows){ //only 1 record = 1 row

     result = Convert.toInt32(dr["field1"]); }

  return result;
}

//进度 OpenEdge 10.1

--- 创建和填充临时表:field1 = 30 并且只有 1 条记录

--- 创建数据集并绑定到临时表

--- 连接到网络服务

--- 调用网络方法:

将变量结果定义为整数不撤消。

在 hPortType 中运行 getResult(输入数据集,输出结果)。

消息结果视图-作为警报框信息按钮确定。---> 结果总是 0

/ * ** * /

有人知道如何将正在进行的数据集“桥接”到 .net 数据集吗?

注意:如果从 .net 调用,此 Web 服务运行良好

4

2 回答 2

0

DataSet使用.NET 或任何其他特定于 .NET 的类型来发送到 Web 服务或从 Web 服务接收是一种不好的做法。.NET 以外的任何东西都没有理由理解这些类型。

顺便说一句,同样的事情与 Java 有关。某些版本的 Axis Web 服务基本上假定它们被 Java 代码使用,并且使用特定于 Java 的类型而不定义它们。没有很好地工作。

于 2012-10-12T02:58:30.843 回答
0

对于 Web 服务,您应该使用 XML。那是标准化的沟通方式。

http://en.wikipedia.org/wiki/Web_service

于 2012-10-12T08:15:12.023 回答