Rest Can';t使用HTTPSEND更新OData_u_仲裁状态

Rest Can';t使用HTTPSEND更新OData_u_仲裁状态,rest,visual-studio-2013,http-headers,workflow-manager-1.x,Rest,Visual Studio 2013,Http Headers,Workflow Manager 1.x,我尝试过用3种不同的方式更新OData_uuuModerationStatus列(又名“Approval Status”)的值,但只有一种方法有效。使用VS 2013从工具箱中删除工作流更新项活动,您可以看到其标题中缺少X-RequestDigest,不允许更新审批状态,并导致安全验证错误。我相信这个错误与缺少标题有关。下面是UpdateListItem中的代码 RequestHeaders = (InArgument<DynamicValue>) ((Activity<Dy

我尝试过用3种不同的方式更新OData_uuuModerationStatus列(又名“Approval Status”)的值,但只有一种方法有效。使用VS 2013从工具箱中删除工作流更新项活动,您可以看到其标题中缺少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,
接受:application/json;odata=冗长 内容类型:application/json;odata=冗长 如果匹配:* X-HTTP-Method:MERGE

正文:[我已经尝试了以下3种方法]

String.Format("{ '__metadata': { 'type': '" + type + "' },'OData__ModerationStatus':'0' }")
{{u__metadata':{'type':'SP.Data.Shared{u x0020_DocumentsItem'}, “OData_uuModerationStatus':“0”}

使用BuildDynamicValue活动设置RequestContent

这三个错误都来自Microsoft.SharePoint.SPException:无效的文本值。文本字段包含无效数据。如果我使用任何其他字段,它会工作,如果我使用Fiddler或Advanced Rest Client,它会更新值

有人可以帮助我理解或解释为什么它可以通过REST调用工作,但我不能使用VS和UpdateItem/HTTPSend来设置值

我已经包括了一个成功的工作流程,更新标题的图像

我们能够让场景正常工作。 进一步调查后,我们可以看到工作流没有批准权限。 我们可以通过在fiddler中捕获工作流的REST调用看到这一点

{“error”:{“code”:“-2147024891,System.UnauthorizedAccessException”,“message”:{“lang”:“en-US”,“value”:“访问被拒绝。您没有执行此操作或访问此资源的权限。”},“innerror”:{“message”:“0x80070005owssvr.dll:(未解析符号,模块偏移量=0000000000015BC3)在0x000007F988885BC3\nMicrosoft.SharePoint.Library.ni.dll

VS 2013 SP 2013工作流与提供商托管的应用程序非常相似,具有默认权限,其中不包括批准项目

执行以下步骤修复此问题

•转到站点设置 网站应用程序权限 查找应用程序工作流,复制第一个guid,如下所示

•前往http:///_layouts/15/appInv.aspx. 在应用程序ID中输入上一步复制的Guid,然后单击查找。 这将填充标题、应用程序域和重定向URL列。 在权限请求XML中复制以下内容(不要更改范围)


•再次测试工作流并开始工作。

我们能够让场景正常工作。 进一步调查后,我们可以看到工作流没有批准权限。 我们可以通过在fiddler中捕获工作流的REST调用看到这一点

{“error”:{“code”:“-2147024891,System.UnauthorizedAccessException”,“message”:{“lang”:“en-US”,“value”:“访问被拒绝。您没有执行此操作或访问此资源的权限。”},“innerror”:{“message”:“0x80070005owssvr.dll:(未解析符号,模块偏移量=0000000000015BC3)在0x000007F988885BC3\nMicrosoft.SharePoint.Library.ni.dll

VS 2013 SP 2013工作流与提供商托管的应用程序非常相似,具有默认权限,其中不包括批准项目

执行以下步骤修复此问题

•转到站点设置 网站应用程序权限 查找应用程序工作流,复制第一个guid,如下所示

•前往http:///_layouts/15/appInv.aspx. 在应用程序ID中输入上一步复制的Guid,然后单击查找。 这将填充标题、应用程序域和重定向URL列。 在权限请求XML中复制以下内容(不要更改范围)

•再次测试工作流并开始工作

String.Format("{ '__metadata': { 'type': '" + type + "' },'OData__ModerationStatus':'0' }")
    <AppPermissionRequests>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" /></AppPermissionRequests>