Microsoft Graph API设置SingleValueExtendedProperties报错求助
问题原因及解决办法
你遇到的「Set action is invalid for property」错误,核心问题是直接替换了整个
SingleValueExtendedProperties集合。Graph API的Patch操作不允许直接对整个扩展属性集合执行Set(替换)动作,只能针对单个扩展属性进行添加或更新。你的代码里
emailMessage.SingleValueExtendedProperties = new List<SingleValueLegacyExtendedProperty>();这一行是关键错误:这会清空原有扩展属性并替换成新列表,触发了Graph API不允许的集合级Set操作。
修正后的代码示例
不需要重新初始化整个列表,直接往已有集合里加新属性即可:
// 不要重新赋值整个列表,直接添加新属性 emailMessage.SingleValueExtendedProperties.Add( new SingleValueLegacyExtendedProperty { Id = "String {8ECCC264-6880-4EBE-992F-8888D2EEAA1D} Name x-matter-ref", Value = reference.ToString(), } );
如果是用Graph SDK发起Patch请求,更规范的写法是只针对要添加的扩展属性构建请求,避免影响原有属性:
var patchMessage = new Message { SingleValueExtendedProperties = new List<SingleValueLegacyExtendedProperty> { new SingleValueLegacyExtendedProperty { Id = "String {8ECCC264-6880-4EBE-992F-8888D2EEAA1D} Name x-matter-ref", Value = reference.ToString() } } }; await graphClient.Users[userId].Messages[messageId] .PatchAsync(patchMessage, (requestConfiguration) => { // 指定只更新扩展属性,避免不必要的字段操作 requestConfiguration.QueryParameters.Select = new[] { "singleValueExtendedProperties" }; });
另外要注意:如果这个扩展属性已经存在,上述操作会自动更新它的值;如果不存在则会新增,符合Patch的语义。
内容的提问来源于stack exchange,提问作者TeePee
相关产品推荐
相关产品推荐

