我将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
命名空间=瓮:微软动力学-架构/错误
答案 0 :(得分:2)
原因是您要将数据导入Imp。线表。在NAV中,“Line”类型表的主键通常是行号(它只是一个Integer运行号)。所以你有三个选择: - 您需要从代码中填充行号以使记录唯一 - 有人需要更改另一侧的表结构以使主键AutoIncremented - 您必须逐个传递数组项目