首页 > 解决方案 > 通过 Graph 设置 contentTypeID 时访问被拒绝错误(只读)

问题描述

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

我们正在对地址“ https://graph.microsoft.com/v1.0/sites/[companyName].sharepoint.com,[siteCollectionID],[siteId]/lists/[listId]/items执行“补丁” /[itemId]/fields " 带有请求数据 "{"ContentTypeId": "0x[ContentTypeID]"}"

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

因为这种情况在没有任何代码更改的情况下发生,我们想知道 Microsoft 是否更改了 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 的更新,或者我可以使用更多有用的地方吗?

标签: sharepointmicrosoft-graph-apisharepoint-online

解决方案


要使用图形 API 更改列表项的内容类型,您实际上需要修改项本身的 ContentType facet,而不是 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 因此修补该字段直接不正确。


推荐阅读