我尝试以 3 种不同的方式更新 OData__ModerationStatus 列 AKA“批准状态”的值,但只有一种有效。使用 VS 2013 工具箱中的 WorkFlow update Item 活动,您可以看到它在标头中缺少 X-RequestDigest,并且不允许更新批准状态并导致安全验证错误。我认为该错误与缺少的标头有关。这是来自 UpdateListItem 的代码。
RequestHeaders = (InArgument<DynamicValue>) ((Activity<DynamicValue>) new SetDynamicValueProperties()
{
Properties = {
{
"If-Match",
(InArgument) new InArgument<string>("*")
},
{
"X-HTTP-Method",
(InArgument) new InArgument<string>("MERGE")
},
{
"Accept",
(InArgument) new InArgument<string>("application/json;odata=verbose")
},
{
"Content-Type",
(InArgument) new InArgument<string>("application/json;odata=verbose")
}
}
}),
RequestContent = (InArgument) listItemProperties,
因此,我使用了 2 个 SendHttp 活动,其中一个使用带有 url siteurl/_api/contextinfo 的 POST 获取 X-RequestDigest,第二个 POST 使用以下标头和正文。标题:
X-RequestDigest:[FormDigestValue from the previous POST]
接受:应用程序/json;odata=详细内容类型:应用程序/json;odata=verbose IF-MATCH: * X-HTTP-Method: MERGE
身体:[我尝试了以下3个]
String.Format("{ '__metadata': { 'type': '" + type + "' },'OData__ModerationStatus':'0' }")
{ '__metadata': { 'type': 'SP.Data.Shared_x0020_DocumentsItem' }, 'OData__ModerationStatus':'0' }
使用 BuildDynamicValue 活动来设置 RequestContent。
这三个都带有 Microsoft.SharePoint.SPException 错误:文本值无效。文本字段包含无效数据。如果我使用它工作的任何其他字段,如果我使用 Fiddler 或 Advanced Rest Client 它会更新值。
有人可以帮助我理解或解释为什么它可以通过 REST 调用工作,但我不能使用 VS 和 UpdateItem/HTTPSend 来设置值。
我已经包含了一个成功的工作流程更新标题的图像