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

Web service call method with array of objects

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

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 消息:小鬼。线路已经存在。标识字段和值:Import Process Code='',UID='',Line No.='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 的代码 属性 具有名称和命名空间成员

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

命名空间=urn:microsoft-dynamics-schemas/error

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