1

我正在尝试在 a 中进行 POST WebRequest Activity,但如果我选择 JSON 格式,正文始终为空:

在此处输入图像描述

我尝试过转义和取消转义字符,带或不带引号和空格等:

{\"value\": [{\"@search.action\": \"delete\",\"id\": \"abc-008\"}]}

{value:[{@search.action: delete,id: abc-008}]}

formValues总是空的:

var formValues = activityContext.GetState<string>("FormValues") ?? "";

如果我选择 Key/Value 作为格式,但我需要 Json,请求工作正常。

编辑:应该补充一点,我尝试了有效的 Json 格式(JsonLint)加上我给出的示例,有和没有空格并使用 ' 而不是 " 但它仍然是空的。

4

2 回答 2

2

快速解决:

(( "value": [(( "@search.action": "delete", "id": "abc - 008" ))] ))

说明:这实际上是 Orchard 如何在工作流程中处理令牌的一个尴尬的副作用。加点盐,因为我记性不好,但我认为它是这样的。因此,在将数据发送到各个工作流活动之前,工作流模块会执行存储的令牌。这意味着您存储的所有 JSON 都将被丢弃,因为 Orchard 认为它是一个令牌(Orchard 令牌的格式如下:{Content.Body} 等)并尝试执行它。我在尝试将复杂对象存储在工作流活动中时发现了这一点,并且不得不解决这个问题。我打算将其报告为一个问题,但我想我忘记了(我的错),但看到这让我认为这真的是一个错误。那么为什么上面的工作呢?一些自私的天才显然遇到了这个问题,并使用以下 hack 行更新了代码:

var json = formValues.Replace("((", "{").Replace("))", "}");

然后离开 UI 说:

对于 JSON,请输入有效的 JSON 字符串

大失败。

为了纠正我之前的懒惰,我为此提出了两个问题。https://github.com/OrchardCMS/Orchard/issues/7760 https://github.com/OrchardCMS/Orchard/issues/7759

于 2017-07-09T17:59:09.383 回答
0

两种给定的 Json 格式均无效。你试过简单的格式吗?

{“价值”:[{“@search.action”:“删除”,“id”:“abc - 008”}]}

于 2017-07-06T06:34:50.200 回答