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

时间:2015-11-07 16:34:58

标签: c# .net web-services soap dynamics-nav

我将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。线已经存在。标识字段和值:导入流程代码='',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>

我必须在代码或配置中进行更改吗? 谢谢

EDIT FaultException具有名称和命名空间成员的代码属性

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

命名空间=瓮:微软动力学-架构/错误

1 个答案:

答案 0 :(得分:2)

原因是您要将数据导入Imp。线表。在NAV中,“Line”类型表的主键通常是行号(它只是一个Integer运行号)。所以你有三个选择: - 您需要从代码中填充行号以使记录唯一 - 有人需要更改另一侧的表结构以使主键AutoIncremented - 您必须逐个传递数组项目