为页面 Web 服务创建扩展代码单元时出现 IndexOutOfRangeException
IndexOutOfRangeException when creating an Extension Codeunit for a Page Web Service
我正在尝试通过 Page Web Service[=38= 在 Codeunit 中公开 Function ] 在 Dynamics NAV (2009 R2) 中。我遵循 MSDN documentation and the steps in a blog post,但在连接到 Web 服务时出现以下错误:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
我创建了一个 Page Web Service 和一个 Codeunit Web Service,两者使用相同的名称,只有 Page Web服务已发布:
我的 Codeunit 目前只包含 1 个函数,看起来像这样:
当我也发布Codeunit Web Service时,我可以使用它,但是Page Web Service仍然显示错误。
当我重命名 Codeunit Web 服务时,页面 Web 服务再次像以前一样工作,当然没有 Codeunit 的功能。
我是漏了什么还是做错了什么?
您代码单元中的函数签名错误。此外,在博客中使用的是 Run
函数(不是用户函数)。不知道有没有关系。
Next phase: post the selected invoice. I don't have a method in my web service to post my invoice, so this is where we are going to extend the web service with this possibility. Very simple! I just created a codeunit with a function. In this function, the signature is important: the first parameter should be the same record variable of the page you published (in our case, "Sales Header"). This is my (only) function of my codeunit:
PostInvoice(precSalesinvoice : Record "Sales Header")
CODEUNIT.RUN(CODEUNIT::"Sales-Post", precSalesinvoice);
我正在尝试通过 Page Web Service[=38= 在 Codeunit 中公开 Function ] 在 Dynamics NAV (2009 R2) 中。我遵循 MSDN documentation and the steps in a blog post,但在连接到 Web 服务时出现以下错误:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
我创建了一个 Page Web Service 和一个 Codeunit Web Service,两者使用相同的名称,只有 Page Web服务已发布:
我的 Codeunit 目前只包含 1 个函数,看起来像这样:
当我也发布Codeunit Web Service时,我可以使用它,但是Page Web Service仍然显示错误。
当我重命名 Codeunit Web 服务时,页面 Web 服务再次像以前一样工作,当然没有 Codeunit 的功能。
我是漏了什么还是做错了什么?
您代码单元中的函数签名错误。此外,在博客中使用的是 Run
函数(不是用户函数)。不知道有没有关系。
Next phase: post the selected invoice. I don't have a method in my web service to post my invoice, so this is where we are going to extend the web service with this possibility. Very simple! I just created a codeunit with a function. In this function, the signature is important: the first parameter should be the same record variable of the page you published (in our case, "Sales Header"). This is my (only) function of my codeunit:
PostInvoice(precSalesinvoice : Record "Sales Header") CODEUNIT.RUN(CODEUNIT::"Sales-Post", precSalesinvoice);