Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用progress4GL web服务时如何将progress4GL数据集输出参数转换为.net类型_C#_.net_Progress 4gl_Openedge - Fatal编程技术网

C# 使用progress4GL web服务时如何将progress4GL数据集输出参数转换为.net类型

C# 使用progress4GL web服务时如何将progress4GL数据集输出参数转换为.net类型,c#,.net,progress-4gl,openedge,C#,.net,Progress 4gl,Openedge,因此,我的同事用progress4GL编写了一个简单的web服务,希望我将其作为输入参数->数据集并返回一个数据集。这是web服务 Define TEMP-TABLE TTList NO-UNDO FIELD CtrlName AS CHAR FIELD WrdNr AS INT FIELD Descr AS CHAR FIELD DescrShort

因此,我的同事用progress4GL编写了一个简单的web服务,希望我将其作为输入参数->数据集并返回一个数据集。这是web服务

Define TEMP-TABLE TTList NO-UNDO
       FIELD  CtrlName          AS CHAR
       FIELD  WrdNr             AS INT
       FIELD  Descr             AS CHAR
       FIELD  DescrShort        AS CHAR
       FIELD  DescrTooltip      AS CHAR

       FIELD TRecid             AS INT
       .

DEFINE DATASET ds FOR TTList.

DEFINE INPUT        PARAMETER pCoCd                         AS CHARACTER   NO-UNDO.
DEFINE INPUT        PARAMETER pLanCd                        AS CHARACTER   NO-UNDO.
DEFINE INPUT        PARAMETER pUsrCd                        AS CHARACTER   NO-UNDO.
DEFINE INPUT        PARAMETER pFilter                       AS CHARACTER   NO-UNDO.
DEFINE INPUT-OUTPUT PARAMETER DATASET                       FOR ds.
DEFINE       OUTPUT PARAMETER pErrorTxt                     AS CHARACTER   NO-UNDO.

在.net中,当我使用web服务时.net希望传递progress4gl输入输出数据集参数的XmlElement类型

 XmlElement docresult = doc.DocumentElement;
             beaHostDB.TranslateList(pCoCd, languageID, " ", " ", ref  docresult, out pErrorTxt);
但是昨天,当我的同事将web服务上传到服务器上时——当我对web服务进行新的web引用时——突然针对这个输出-输入数据集参数.net说它需要beaHost.ds11TTList ds11类型。(这里beaHost是对Web服务的引用的名称)

有人能帮帮我吗?也许有问题

!!更新

这是来自服务器的wsdl(我只提供了一些有区别的片段)

schema xmlns=”http://www.w3.org/2001/XMLSchema“elementFormDefault=“qualified”targetNamespace=“urn:BeaWeb:BeaWeb”>
---
下面是来自Localhost的wsdl文件

complexType name="dsChanges" prodata:datasetName="ds" prodata:isDsChanges="true" prodata:namespace="urn:beawebprogress:BeaWebProgress">
<sequence>
<any/>
</sequence>
</complexType>
<element name="ds">
<complexType>
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="TTArticle">
<complexType>
<sequence>
<element name="ArtCd" nillable="true" type="xsd:string"/>
<element name="Descr" nillable="true" type="xsd:string"/>
<element name="Photo" nillable="true" prodata:dataType="prodata:blob" type="xsd:base64Binary"/>
<element name="Price" nillable="true" type="xsd:decimal"/>
<element name="CurrCd" nillable="true" type="xsd:string"/>
<element name="AvStockQty" nillable="true" type="xsd:decimal"/>
<element name="TRecid" nillable="true" type="xsd:int"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<complexType name="ds2Changes" prodata:datasetName="ds2" prodata:isDsChanges="true" prodata:namespace="urn:beawebprogress:BeaWebProgress">
<sequence>
<any/>
</sequence>
</complexType>
<element name="ds2">
<complexType>
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="TTArticleGroup">
<complexType>
<sequence>
<element name="ArticleGroupLinkSeqNr" nillable="true" type="xsd:int"/>
<element name="ParentArticleGroupLinkSeqNr" nillable="true" type="xsd:int"/>
<element name="PreParentArticleGroupLinkSeqNr" nillable="true" type="xsd:int"/>
<element name="SeqNr" nillable="true" type="xsd:int"/>
<element name="ArtGroupCd" nillable="true" type="xsd:string"/>
<element name="Descr" nillable="true" type="xsd:string"/>
<element name="Photo" nillable="true" prodata:dataType="prodata:blob" type="xsd:base64Binary"/>
<element name="AltText" nillable="true" type="xsd:string"/>
<element name="PgName" nillable="true" type="xsd:string"/>
<element name="TRecid" nillable="true" type="xsd:int"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
-------------------
<element name="GetArticle">
<complexType>
<sequence>
<element name="pCoCd" nillable="true" type="xsd:string"/>
<element name="pLanCd" nillable="true" type="xsd:string"/>
<element name="pUsrCd" nillable="true" type="xsd:string"/>
<element name="pFilter" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="GetArticleResponse">
<complexType>
<sequence>
<element name="result" nillable="true" type="xsd:string"/>
<element name="ds" type="S2:dsChanges"/>
<element name="pErrorTxt" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="GetArticleGroup">
<complexType>
<sequence>
<element name="pCoCd" nillable="true" type="xsd:string"/>
<element name="pLanCd" nillable="true" type="xsd:string"/>
<element name="pUsrCd" nillable="true" type="xsd:string"/>
<element name="pFilter" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="GetArticleGroupResponse">
<complexType>
<sequence>
<element name="result" nillable="true" type="xsd:string"/>
<element name="ds2" type="S2:ds2Changes"/>
<element name="pErrorTxt" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
complexType name=“dsChanges”prodata:datasetName=“ds”prodata:isDsChanges=“true”prodata:namespace=“urn:beawebprogress:beawebprogress”>
-------------------

如果您没有,请从此处下载SoapUI:

在SoapUI中,设置一个项目来调用您的Web服务并查看它返回的内容-我猜发送给客户端的prodataset和/或temp表的名称与您的.Net客户端所期望的不匹配,这就是错误的来源

如果是这种情况,请使用SERIALIZE-NAME属性获取要在Web服务和客户端之间对齐的名称

我猜是TT名称不匹配,所以你应该这样做:

TEMP-TABLE ttlist:SERIALIZE-NAME = "ds11TTList".
DATASET ds:SERIALIZE-NAME = "CorrectDsName".
如果是数据集,则执行以下操作:

TEMP-TABLE ttlist:SERIALIZE-NAME = "ds11TTList".
DATASET ds:SERIALIZE-NAME = "CorrectDsName".

是否有web服务的WSDL,我们可以看到吗?嗨,我已经发布了WSDL中的一个片段,具有不同之处。嗨,谢谢-您可以从WSDL中快速查看一下,返回服务器和本地主机。我没有看到任何引用这些WSDL中的beaHost.ds11TTList ds11的内容,因此我在这里无法提供帮助。您需要找到这些名称在代码中的位置,然后才能找出Web服务和.Net使用者之间不匹配的原因。