通过图表

时间:2018-08-24 10:14:57

标签: sharepoint microsoft-graph sharepoint-online

我们正在使用Graph api设置SharePoint文档的内容类型。从8月23日开始,在不更改任何代码的情况下,我们将收到访问被拒绝的错误。

我们正在对地址“ https://graph.microsoft.com/v1.0/sites/[companyName].sharepoint.com,[siteCollectionID],[siteId]/lists/[listId]/items/[itemId]/fields”执行“ PATCH” 使用requestdata“ {” ContentTypeId“:” 0x [ContentTypeID]“}”

在一个SharePoint Online环境上仍然可以使用,但是在另一个SharePoint Online环境中,我们收到以下错误: 代码:“ accessDenied” 消息:“字段'ContentTypeId'为只读”

因为这种情况无需更改任何代码即可发生,我们想知道微软是否更改了SharePoint Online更新中的某些内容,或者在出现故障的SharePoint环境中是否存在任何可能导致此异常的设置?

谢谢您的帮助或建议

更新

不幸的是,周末情况恶化了。 我们的情况更新:我们有2个我们自己管理的SharePoint Online环境和1个我们无法控制的SP Online。在星期五,我的环境1仍然可以正常工作,而2开始出现故障。现在,星期一,所有3种环境均失败。我100%确定我们没有更改代码,并且在2个SP环境中,我100%确定我们没有更改任何设置。

我正在尝试通过Office路线图(https://products.office.com/nl-NL/business/office-365-roadmap?filters=%26freeformsearch=SharePoint)研究SharePoint Online的更新,或者还有其他有用的地方吗?

3 个答案:

答案 0 :(得分:4)

要使用图形API更改列表项的内容类型,您实际上要修改项目本身的ContentType方面,而不是ContentType或ContentTypeID字段。这是一个示例:

PATCH 

https://graph.microsoft.com/v1.0/sites/YOURTENANT.sharepoint.com:/sites/SITENAME:/lists/LISTNAME/items/1/

{
    "contentType": { "id": "0x0100D3426610C727AC42B5238A1FA52864F6" }
}

在这种情况下,这就是我基本商品类型的ID。我不确定为什么对ContentTypeId字段进行修补会奏效,因为在我们的基础代码中它似乎不是可寻址的字段。我将继续挖掘以查看是否最近进行了更改,但据我所知,现在最好以前真的不起作用,因为ContentType是一个既包含名称又包含ID的复杂类型,因此请对该字段进行修补直接是不正确的。

答案 1 :(得分:1)

我认为Graph有一些变化。在Postman中测试了这些调用,我可以确定从8月23日开始Graph调用已停止在多个环境中工作。据我所知,它与SharePoint环境上的任何设置无关。

作为一种解决方法,似乎仍然可以使用SharePoint REST Api更改内容类型。

PATCH {siteurl}/_api/web/lists(guid'{libraryId}')/items({id})
If-Match: {eTag}
X-HTTP-Method: Merge

{"ContentTypeId": "0x0101009E44B70FDF6D5D418E3B608C7DB4E8DB0100F24E9188A7EE514197DF449302E7D11C"}

不得不退回SharePoint API来获取以前用于Graph的功能,这有点烦人。

答案 2 :(得分:0)

经过一些挖掘,我还没有看到Microsoft的任何官方帖子,也没有在线声明与Sharepoint相关的任何更新。但这可能只是拖延或他们忘记了。

根据您的错误代码。 “ accessDenied”消息:“字段'ContentTypeId'为只读”。权限似乎已更改。

我建议您检查定义站点列的Field元素。 或比较您的两个SharePoint在线环境,以查看权限是否按预期更改。

ReadOnly="TRUE" | "FALSE"
ReadOnlyEnforced="TRUE" | "FALSE"

也许站点管理员正在考虑锁定色谱柱,但忘记抬起它。有时,在创建新的网站栏时,SharePoint管理员会将其设置为只读或强制实施为只读,以防止用户编辑字段中存储的数据。可以通过PowerShell或CSOM来完成。

这里有一些references和字段property