2017-07-29 68 views
1

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

 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" 
    } 
    } 
} 

代码是否正确,这是一个错误,我失去的东西还是什么? 有没有办法解决这个问题?

回答

2

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

当我在几次尝试后看到问题时,您尝试更新(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财产放在第一位,

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

希望它能帮助你,如果它仍然releavent任何方式。

+1

太棒了!刚刚尝试过,它的工作原理!谢谢。 :)我虽然没有这样做。 – NoOne