UpdateAysnc抛出" Field' id'没有被认出"错误

时间:2017-11-01 08:07:14

标签: c# .net-core microsoft-graph

我有以下代码,使用.NET Core 2.0控制台应用程序用C#编写。我已经将这些相同的变量用于添加功能,并且一切正常。

GetAsync工作并撤回列表项。调用UpdateAsync时,我从Microsoft Graph返回错误:

Messsage: Field 'id' is not recognied
HResult: -2146233088
request-id: 0682cf9f-c828-43f1-bc9e-acb21631a58e
date: 01/11/2017 7:28:38 Ticks 636450912000000000

请注意"识别"是实际的拼写返回

这是我使用的代码:

var listItemId = SharePointIdToInSiteMapping.GetValueOrDefault(siteRecord.InSiteID);
var graphClient = GetGraphClient();

var listItem = await graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request()
    .Expand(i = > i.Fields)
    .GetAsync();

listItem.Fields.AdditionalData["Title"] = siteRecord.Title;

try
{
    var request = graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request();
    var result = await request.UpdateAsync(listItem);
    Console.WriteLine($"Updated List Item at {result.WebUrl}");
}
catch (Exception e)
{
    Console.WriteLine($"Error updating {siteRecord.Title}");
    Console.WriteLine(e);
}

对那些有兴趣的人更新的代码

var result = await graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request().UpdateAsync(
  new ListItem(){
    Fields = new FieldValueSet{
      AdditionalData = new Dictionary<string, object>{
        {"Title", "A change title"}
      }
     }
   }
  );

1 个答案:

答案 0 :(得分:2)

此错误的原因是您将整个ListItem对象传递给UpdateAsync。由于id属性是只读的,因此返回错误。

为了向ListItem发送更新,您应该传入一个新的ListItem对象,其中只包含您要更改的属性:

var result = await graphClient
    .Sites["siteId"]
    .Lists["listId"]
    .Items["listItemId"]
    .Request()
    .UpdateAsync(new ListItem()
    {
        // Properties you wish to change
    });