Rest Can';t使用HTTPSEND更新OData_u_仲裁状态
我尝试过用3种不同的方式更新OData_uuuModerationStatus列(又名“Approval Status”)的值,但只有一种方法有效。使用VS 2013从工具箱中删除工作流更新项活动,您可以看到其标题中缺少X-RequestDigest,不允许更新审批状态,并导致安全验证错误。我相信这个错误与缺少标题有关。下面是UpdateListItem中的代码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
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>