使用GraphClient设置Microsoft 365组自定义属性报错,求解决方法
解决Microsoft 365组自定义属性设置的BadRequest错误
你遇到的Request_BadRequest错误,核心原因是错误地使用了AdditionalData来设置自定义属性。Microsoft 365组的CustomAttribute1到CustomAttribute15属于onPremisesExtensionAttributes这个嵌套属性组,不能直接通过顶级的AdditionalData来赋值,必须直接操作这个嵌套对象。
正确的实现方式
根据需求不同,有两种常用的实现方案:
方案一:仅更新目标自定义属性(不保留其他属性值)
如果不需要保留其他自定义属性的现有值,可以直接构造包含onPremisesExtensionAttributes的Group对象进行更新:
var updatedGroup = new Microsoft.Graph.Group { OnPremisesExtensionAttributes = new OnPremisesExtensionAttributes { CustomAttribute5 = "Works!" } }; await graphClient.Groups["xxx"] .Request() .UpdateAsync(updatedGroup);
方案二:保留其他自定义属性值
如果需要保留其他自定义属性的现有内容,建议先获取组的当前属性信息,修改目标属性后再提交更新:
// 先获取组的现有自定义属性信息(仅请求需要的字段,提升性能) var existingGroup = await graphClient.Groups["xxx"] .Request() .Select(g => new { g.OnPremisesExtensionAttributes }) .GetAsync(); // 修改目标自定义属性,保留其他属性的原有值 existingGroup.OnPremisesExtensionAttributes.CustomAttribute5 = "Works!"; // 提交更新 await graphClient.Groups["xxx"] .Request() .UpdateAsync(existingGroup);
额外注意事项
- 确保你的应用已被授予足够的权限:比如
Group.ReadWrite.All或Directory.ReadWrite.All权限,并且完成了正确的授权流程。 - 如果你是从本地AD同步的组,自定义属性的更新可能会被AD同步覆盖,这种情况下需要在本地AD中修改后再同步到云。
内容的提问来源于stack exchange,提问作者Thomas Segato
相关产品推荐
相关产品推荐

