我正在尝试通过Dynamics NAV(2009 R2)中的页面Web服务在 Codeunit 中公开功能。我按照MSDN documentation和a blog post中的步骤进行了操作,但在连接到Web服务时出现以下错误:
System.IndexOutOfRangeException :索引超出了数组的范围。
我创建了一个页面Web服务和一个 Codeunit Web服务,它们都使用相同的名称,只发布了Page Web服务:
我的 Codeunit 目前只包含1个功能,如下所示:
当我发布 Codeunit Web服务时,我也可以使用它,但页面Web服务仍会显示错误。
当我重命名 Codeunit Web服务时,页面Web服务会像以前一样再次运行,当然没有Codeunit的功能。
我错过了什么或做错了什么?
答案 0 :(得分:1)
您的codeunit中的函数签名错误。此外,在博客中使用的是Run
函数(不是用户函数)。不知道它是否重要。
下一阶段:过帐所选发票。我的网络服务中没有方法可以发布我的发票,因此我们将以这种方式扩展Web服务。非常简单!我刚刚用函数创建了一个codeunit。在此函数中,签名很重要:第一个参数应该是您发布的页面的相同记录变量(在我们的示例中," Sales Header")。这是我的codeunit的唯一函数:
PostInvoice(precSalesinvoice:Record" Sales Header") CODEUNIT.RUN(CODEUNIT ::" Sales-Post",precSalesinvoice);