MS Graph SDK v5创建联系人时singleValueExtendedProperties不生效求助
解决方案:C# Graph SDK v5 创建联系人时 singleValueExtendedProperties 不生效问题
针对你遇到的创建联系人时扩展属性未正确生效的问题,可按以下步骤排查解决:
1. 验证请求体是否正确发送扩展属性
首先确认SDK实际发送的请求体中包含了singleValueExtendedProperties。启用SDK日志查看请求内容:
using Microsoft.Extensions.Logging; // 初始化带日志的Graph客户端 var loggerFactory = LoggerFactory.Create(builder => { builder.AddConsole().SetMinimumLevel(LogLevel.Debug); }); var gsc = new GraphServiceClient(authProvider, loggerFactory: loggerFactory); // 执行原创建代码 var requestContactBody = new Microsoft.Graph.Models.Contact { // 你的其他属性赋值... SingleValueExtendedProperties = new List<Microsoft.Graph.Models.SingleValueLegacyExtendedProperty> { new Microsoft.Graph.Models.SingleValueLegacyExtendedProperty { Id = "String {00062004-0000-0000-C000-000000000046} Id 0x8084", Value = aSemail, }, new Microsoft.Graph.Models.SingleValueLegacyExtendedProperty { Id = "String {00062004-0000-0000-C000-000000000046} Id 0x8082", Value = "SMTP", }, }, }; gsc.Users[impersonaddr].ContactFolders[aFolderID].Contacts.PostAsync(requestContactBody).GetAwaiter().GetResult();
查看控制台输出的请求体,确认singleValueExtendedProperties字段存在且值正确。如果该字段缺失,检查代码中是否正确初始化了属性列表。
2. 改用创建后更新扩展属性
部分系统扩展属性可能无法在联系人创建时直接设置,可先创建联系人,再通过PATCH请求更新扩展属性:
// 1. 创建联系人 var newContact = gsc.Users[impersonaddr].ContactFolders[aFolderID].Contacts.PostAsync(requestContactBody).GetAwaiter().GetResult(); // 2. 准备扩展属性更新体 var updateBody = new Microsoft.Graph.Models.Contact { SingleValueExtendedProperties = new List<Microsoft.Graph.Models.SingleValueLegacyExtendedProperty> { new Microsoft.Graph.Models.SingleValueLegacyExtendedProperty { Id = "String {00062004-0000-0000-C000-000000000046} Id 0x8084", Value = aSemail, }, new Microsoft.Graph.Models.SingleValueLegacyExtendedProperty { Id = "String {00062004-0000-0000-C000-000000000046} Id 0x8082", Value = "SMTP", }, } }; // 3. 更新联系人扩展属性 gsc.Users[impersonaddr].ContactFolders[aFolderID].Contacts[newContact.Id].PatchAsync(updateBody).GetAwaiter().GetResult();
3. 确认扩展属性ID的正确性
确保扩展属性ID的格式和内容完全正确:
- GUID部分统一使用大写:
{00062004-0000-0000-C000-000000000046} - 属性ID的前导零不影响(
0x8084和0x00008084等价),但建议保持与查询时一致的格式
4. 检查权限配置
确认你的应用已获得Contacts.ReadWrite权限(Delegated或Application类型),且授权流程正确完成。若权限不足,扩展属性的写入操作会被静默忽略。
内容的提问来源于stack exchange,提问作者John Park
相关产品推荐
相关产品推荐

