【发布时间】:2015-11-07 16:34:58
【问题描述】:
我调用一个 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 消息:小鬼。线路已经存在。标识字段和值: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 有一个带有 Name 和 Namespace 成员的 Code 属性
Name=Microsoft.Dynamics.Nav.Types.Exceptions.NavCSideException
命名空间=urn:microsoft-dynamics-schemas/error
【问题讨论】:
-
您使用的是 Microsoft Dynamics Nav 吗?看起来错误来自那里。如果是这种情况,这听起来像是他们软件中的错误,您应该在他们的支持论坛中询问。
-
@ShadowWizard 是的,我更新了问题
-
同意@wizard,错误来自导航内部。因此,您需要检查/调试处理请求的代码单元。你确定 ws 可以处理数组吗?你能发布 ws 或这个特定请求的 wsdl 吗?绑定在这里似乎没有意义。
-
@MakSim 看起来 TestMethod 函数的参数是作为参考发布的 XmlPort。在这种情况下,MaxOccurs = Unbounded 的元素在 WS 中显示为数组。在这种情况下,可以通过填充 Test.Items 类的所有属性(如果它们包括表的关键字段)来解决问题。但无论如何还是要分析和理解NAV端的代码。
标签: c# .net web-services soap dynamics-nav