【问题标题】:HttpClient DeleteAsync throwing 500 error in Acumatica REST APIHttpClient DeleteAsync 在 Acumatica REST API 中引发 500 错误
【发布时间】:2018-06-13 13:12:57
【问题描述】:

我需要一些关于如何使用 Acumatica REST API (v17.204.0019) 让 HttpClient DeleteAsync 工作的建议。我已经成功地使用 GetAsync 完成了 GET,但是使用同一数据行的 DeleteAsync 的 DELETE 返回了 500 错误。我对 GET 和 DELETE 调用使用相同的 URL --

https://localhost/AcuAmazon172040019/entity/Default/17.200.001/SalesOrder/SO/001337

但 GET 会返回预期的 json,而 DELETE 会抛出 500。GetAsync 调用如下所示:

Response = HttpClient.GetAsync(url).Result.EnsureSuccessStatusCode();

DeleteAsync 调用如下所示:

Response = HttpClient.DeleteAsync(url).Result.EnsureSuccessStatusCode();

其中 Response 是一个 HttpResponseMessage 属性,而 HttpClient 是一个 HttpClient 属性。

【问题讨论】:

  • 我将 https 排除在外,因此我的 URL 现在看起来像这样:localhost/AcuAmazon172040019/entity/Default/17.200.001/…。现在我没有收到异常或 500 错误,但我得到的响应字符串是“Id = 86, Status = Faulted, Method = "{null}", Result = "{Not yet computed}""。
  • 没关系,我仍然收到 500 错误,但由于某种原因它没有被捕获,直到我添加了一个额外的 try...catch。 EnsureStatusCode() 抛出 500,没有内部异常或我能找到的更多详细信息。
  • 我不知道这是否与它有关,但是当我使用 Postman 执行此操作时,它成功运行,但返回有关删除按钮被禁用的消息。所以我随后将订单 # 更改为打开的订单,邮递员返回“没有实体满足条件”。我试过三个未结订单号,它总是返回这个。所以现在也有这个问题。
  • 所以看起来即使调用成功也会抛出500错误,但是却无法通过key找到销售订单。使用开放式 SO 订单号时,我在 C# 中得到相同的“没有实体满足条件”响应。当我知道订单号在那里时,我现在需要弄清楚为什么找不到订单号。

标签: rest api httpclient acumatica


【解决方案1】:

我终于让它为我工作了。 500 错误有点像红鲱鱼。正如我在上面的cmets中提到的,我一直在使用的订单#已完成,所以它抛出了一个500,但是有一个消息“删除按钮被禁用”,这意味着根据Acumatica无法删除该订单应用规则。然后我尝试了一个我认为是未结订单#,它也抛出了一个 500 和一条“没有实体满足条件”的消息,这意味着无法找到该订单。事实证明,出于某种原因,我使用的 SalesDemo 数据中的未结订单实际上具有“SO”前缀,因此不仅仅是“004108”,而是“SO004108”。一旦我包含“SO”前缀,订单就会成功删除。成功的url其实是这样的:

http://localhost/AcuAmazon172040019/entity/Default/17.200.001/SalesOrder/SO/SO004108

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多