使用Microsoft Graph创建日历事件无法添加附件(无报错)求助
解决Microsoft Graph创建日历事件时附件不生效的问题
我来帮你搞定这个附件添加失败的问题~你说事件能正常创建,但附件就是加不上还没报错,这种情况大概率是创建事件时直接包含附件的方式存在隐性问题,咱们一步步来排查:
最可靠的解决方案:分开创建事件和添加附件
很多时候,直接在创建事件的请求里嵌套附件,会因为SDK序列化或者API端点的隐性限制导致附件没有被正确提交。换成先创建事件,再单独添加附件的方式,成功率会高很多:
修改后的代码示例
// 1. 先创建不带附件的事件 DateTimeTimeZone start = new DateTimeTimeZone { TimeZone = TimeZoneInfo.Local.Id, DateTime = dateTimePicker1.Value.ToString("o"), }; DateTimeTimeZone end = new DateTimeTimeZone { TimeZone = TimeZoneInfo.Local.Id, DateTime = dateTimePicker2.Value.ToString("o"), }; Location location = new Location { DisplayName = "Thuis", }; var ev = new Event { Start = start, End = end, IsAllDay = false, Location = location, Subject = textBox2.Text }; var createdEvent = await graphServiceClient .Users["user@docned.nl"] .Calendar .Events .Request() .AddAsync(ev); // 2. 读取附件文件并添加到已创建的事件中 byte[] contentBytes = System.IO.File.ReadAllBytes(@"C:\test\sample.pdf"); FileAttachment fa = new FileAttachment { // 可以尝试去掉手动设置的ODataType,让SDK自动处理 ContentBytes = contentBytes, ContentType = "application/pdf", Name = "sample.pdf", IsInline = false, Size = contentBytes.Length }; await graphServiceClient .Users["user@docned.nl"] .Calendar .Events[createdEvent.Id] .Attachments .Request() .AddAsync(fa);
其他排查方向
- 检查附件大小:如果你的
sample.pdf超过4MB,直接通过FileAttachment添加会失败(而且不会返回明显报错)。这种情况需要使用上传会话来分块上传大附件,按照Graph API的大文件上传逻辑处理即可。 - 验证文件读取权限:确认你的程序有读取
C:\test\sample.pdf的权限,虽然事件能创建,但文件读取失败的话,contentBytes会是空数组,附件自然加不上。 - 更新Graph SDK版本:旧版本的Microsoft Graph SDK可能存在创建事件时附件序列化的bug,建议升级到最新的稳定版(比如v5.x系列),避免已知问题。
内容的提问来源于stack exchange,提问作者Ben van Erp
相关产品推荐
相关产品推荐

