具有对象数组的Web服务调用方法

本文关键字:服务 调用 方法 Web 对象 数组 | 更新日期: 2023-09-27 18:21:11

我调用一个web服务的方法,该方法将包含对象数组的类作为参数。

Inquiry obj = new Inquiry
{
    Items = new Test.Items[]
    {
        new Test.Items{ Id="1"}, 
        new Test.Items{ Id="2"}, 
        new Test.Items{ Id="3"}, 
    }
};
client.TestMethod(ref obj);

如果我只传递Items数组中的一个项,那么一切都很好。当我传递两个或多个项时,我会得到一个System.ServiceModel.FaultException消息:Imp.Line已存在。标识字段和值:导入流程代码=",UID=",行号="0"我认为复杂类型的xml或soap序列化有问题。

<basicHttpBinding>
<binding name="WEBInquiry_Binding">
  <security mode="Transport">
    <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm=""/>
    <message clientCredentialType="UserName" algorithmSuite="Default"/>
  </security>
</binding>

这是我必须在代码或配置中更改的内容吗?谢谢

编辑FaultException具有Name和Namespace成员为的代码属性

名称=Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideException

Namespace=urn:microsoft dynamics schemas/error

具有对象数组的Web服务调用方法

原因是您正在将数据导入Imp.Line表。在NAV中,"行"类型表的主键通常是行号(它只是一个整数)。因此,您有三种选择:-您需要从代码中填充行号以使记录唯一-有人需要更改另一侧的表结构,以使主键自动递增-您必须一个接一个地传递数组项