【问题标题】:MicrosoftGraph API fails to mark a message as readMicrosoftGraph API 无法将消息标记为已读
【发布时间】:2018-01-05 17:59:14
【问题描述】:

我正在使用Microsoft.Graph nuget 包(版本 1.6.2),并尝试将电子邮件标记为已读。 这是代码:

        msg.IsRead = true;
        await MainPage.GraphServiceClient.Me.Messages[msg.Id].Request().Select("IsRead").UpdateAsync(msg);

据我了解,上述代码应该只将IsRead 属性发送到服务器进行更新。 但是,执行此操作会发送整个消息对象(我已使用 Fiddler 进行了验证)并且您会收到以下响应:

{
  "error": {
    "code": "ErrorInvalidPropertyUpdateSentMessage",
    "message": "Update operation is invalid for property of a sent message.",
    "innerError": {
      "request-id": "<A guid here that I wont share>",
      "date": "2017-07-29T21:10:18"
    }
  }
}

代码是否正确,这是一个错误,是我遗漏了什么还是什么? 有没有办法解决这个问题?

【问题讨论】:

    标签: .net email outlook microsoft-graph-api


    【解决方案1】:

    在遇到同样的问题后,我刚刚遇到了你的问题。

    正如我在几次尝试后看到的那样,当您尝试更新不允许更新的 (PATCH) 字段时会出现问题。

    在你和我的情况下, 问题是我们发送了 msg 对象,其中包含他的所有字段,而不仅仅是修补和修改的字段。

    而不是执行以下操作:

    var msg = await MainPage.GraphServiceClient.Me
        .Messages[imapMessage.MessageId]
        .Request()
        .GetAsync();
    
    msg.IsRead = true;
    
    await MainPage.GraphServiceClient.Me
        .Messages[msg.Id]
        .Request()
        .Select("IsRead")
        .UpdateAsync(msg);
    

    您首先应该只获取 IsRead 属性,

    更新 从 GraphAPI 1.9 版开始,我们只需要发送更新的属性没有只读属性。

    await MainPage.GraphServiceClient.Me
        .Messages[msg.Id]
        .Request()
        .Select("IsRead")
        .UpdateAsync(new Message {IsRead = true});
    

    希望它对你有帮助,如果它仍然以任何方式相关。

    【讨论】:

    • 太棒了!刚刚试了一下,效果很好!谢谢。 :) 我还没有这样做。
    • 请注意,在 1.9.0 版本中,此代码可能会因为以下错误而失败:github.com/microsoftgraph/msgraph-sdk-dotnet/issues/270。该链接中建议的解决方法也是对代码的改进,因为它减少了正在发送的请求的大小。
    • Select("IsRead") 的目的是什么?是你的最后一个例子吗?这个example 不使用它。
    • 我测试过了,不需要Select("IsRead")
    • 很久没写了,基本上是对原代码的修改。确定你不需要创建一个新的 Message 对象,以防你不需要(这本身就是一个问题)你必须选择,所以它不会覆盖整个对象。
    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2017-10-03
    • 1970-01-01
    • 2016-06-17
    • 2019-03-14
    • 2019-05-05
    相关资源
    最近更新 更多