msdynamicsnav Web服务索引越界

本文关键字:越界 索引 服务 Web msdynamicsnav | 更新日期: 2023-09-27 18:14:44

嗨,我在使用Microsoft Dynamics NAV 2009 R2 Web Service时遇到了问题!

有一个webMethod叫做OrderGoodsInsert它需要参数lLanguageId [int], lRec [Text 250] [100]

lRec应该是一个字符串数组,其值如下所示

    "文档类型"
  1. "文档不。"
  2. "行不行"。-(创建时为空)
  3. "插入用户"
  4. "修改用户"
  5. "类型"[0 -",1 - G/L帐户,2 -项目,3 -资源,4 -固定资产,5 -费用(项目)]
  6. "不"。-商品代码

使用c#代码,我尝试调用作为web服务引用添加到我的项目的方法。代码:

string[] arr = new string[8];
arr[0] = "1";
arr[1] = currentDocNo;
arr[3] = "SU04";
arr[5] = "2";
arr[6] = item.Code;
arr[7] = item.Amount;
arr[2] = "";
arr[4] = "";
navWS.OrderGoodsInsert(1062, arr);

但是当我这样做的时候,我得到

A first chance exception of type 'System.Net.WebException' 
occurred in System.dll
A first chance exception of type 'System.Web.Services.Protocols.SoapException'
occurred in System.Web.Services.dll

错误是index out of bounds

我做错了什么吗?

msdynamicsnav Web服务索引越界

您的OrderGoodsInsert方法在SOAP定义上看起来是这样的

<sequence>
  <element minOccurs="1" maxOccurs="1" name="lLanguageId" type="int"/>
  <element minOccurs="1" maxOccurs="unbounded" name="lRec" type="string"/>
</sequence>

所以它期望变量lRecstring,而不是string[]

尝试将数组转换为单个带分隔符的字符串。

navWS.OrderGoodsInsert(1062, string.Join(";", arr));

但我不确定哪一个是NAV WebServices的正确分隔符

问题是WS的开发人员进行了更改,但没有发送新的文档。