无法使用 Graph API 更新现有日历事件

Unable to update existing calendar event using Graph API

我正在尝试更新现有事件的以下字段,但未按预期更新。

我们要更新的字段:

  1. 添加和删除附件
  2. 更新主题和正文内容。
  3. 添加 and/or 删除 mandatory/optional 与会者。

使用以下代码删除附件:

await graphClient
    .Users[organizer]
    .Events[organizerEventId]
    .Attachments[attachmentId]
    .Request()
    .DeleteAsync()
    .ConfigureAwait(false);

使用以下代码添加附件:

var fileAttachment = new Microsoft.Graph.FileAttachment
{
    ODataType = attachment.odataType,
    Name = attachment.name,
    ContentBytes = attachment.contentBytes,
    ContentType = attachment.contentType
};

var response = await graphClient
    .Users[organizer]
    .Events[organizerEventId]
    .Attachments
    .Request()
    .AddAsync(fileAttachment);

使用以下代码更新与会者:

var updateEvent = new Microsoft.Graph.Event
{
    Attendees = attendees
};

var resultUpdate = await graphClient
    .Users[organizer]
    .Events[organizerEventId]
    .Request()
    .UpdateAsync(updateEvent);

使用以下代码更新主题和正文内容:

var updateEvent = new Microsoft.Graph.Event
{
    HasAttachments = true,
    ResponseRequested = false,
    Subject = subject,
    Body = body
};

var resultUpdate = await graphClient
    .Users[organizer]
    .Events[organizerEventId]
    .Request()
    .UpdateAsync(updateEvent);

我按顺序执行上面的代码,但是当我调试代码时,我发现它只执行第一个逻辑来删除附件和调用,而没有执行下面用相同方法编写的其余代码逻辑。

我找到了这个问题的根本原因并修复了它。 实际上,问题出在异步函数调用上。我试图从非异步函数调用异步函数,如下所示:

public void CreateEvent(type parameter1, type parameter2)
{    
     objMyServiceClass.CreateEvent(parameter1, parameter2);
}

我将上面的代码改成了下面的代码,因为 MyServiceClass 中的 CreateEvent 是一个异步函数。现在它开始正常工作了。

public void CreateEvent(type parameter1, type parameter2)
{    
     Task.Run(async () => await objMyServiceClass.CreateEvent(parameter1, parameter2));
}

我知道,这是一个非常愚蠢的错误,但有时我们开发人员很难找到这样一个愚蠢的错误并以噩梦告终。我希望它可以帮助某人。 谢谢!