2017-07-29 9 views
1

Microsoft.Graphナゲットパッケージ(バージョン1.6.2)を使用していますが、電子メールを既読としてマークしようとしています。 これはコードです:MicrosoftGraph APIでメッセージの読み取りに失敗しました

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

私の理解から、上記のコードは、更新のためにサーバにIsReadプロパティを送信する必要があります。 はしかし、これを実行し、全体のメッセージオブジェクトを送信する(私はバイオリンでこれを確認した)、あなたはこの応答を取得:

{ 
    "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オブジェクトを送信したことでした。代わりに、次のことを行うの

:それはまだどのような方法をreleaventだ場合、それはあなたを助けることを望ん

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); 

+1

恐ろしい!ちょうどそれを試して、それは動作します!ありがとう。 :)私はそれを行うにもかかわらず。 – NoOne

関連する問題