Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UpdateAysnc抛出“错误”;字段';id';“未被承认”;错误_C#_.net Core_Microsoft Graph Api - Fatal编程技术网

C# UpdateAysnc抛出“错误”;字段';id';“未被承认”;错误

C# UpdateAysnc抛出“错误”;字段';id';“未被承认”;错误,c#,.net-core,microsoft-graph-api,C#,.net Core,Microsoft Graph Api,我有以下代码,用C#编写,使用.NETCore2.0控制台应用程序。我使用了这些相同的变量作为加法函数,一切都很好 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

我有以下代码,用C#编写,使用.NETCore2.0控制台应用程序。我使用了这些相同的变量作为加法函数,一切都很好

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
请注意,“recognized”是返回的实际拼写

这是我正在使用的代码:

var listItemId=SharePointId到InsiteMapping.GetValueOrDefault(siteRecord.InSiteID);
var graphClient=GetGraphClient();
var listItem=await graphClient.Sites[siteId]。列出[listId]。项[listItemId]。请求()
.Expand(i=>i.Fields)
.GetAsync();
listItem.Fields.AdditionalData[“Title”]=siteRecord.Title;
尝试
{
var request=graphClient.Sites[siteId]。list[listId]。Items[listItemId]。request();
var result=wait request.UpdateAsync(listItem);
WriteLine($“在{result.WebUrl}更新的列表项”);
}
捕获(例外e)
{
WriteLine($“更新{sitecord.Title}时出错”);
控制台写入线(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"}
      }
     }
   }
  );
var result=wait-graphClient.Sites[siteId]。list[listId]。Items[listItemId]。Request().updateSync(
新列表项(){
字段=新字段值集{
AdditionalData=新字典{
{“标题”,“更改标题”}
}
}
}
);

此错误的原因是您正在将整个
列表项
对象传递给
updateSync
。由于
id
属性是只读的,因此返回错误

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

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

谢谢,就这样。当我看到新的ListItem时,我想我会自动假设它将创建一个新的ListItem。超级常见的错误。当试图为无状态RESTAPI设计面向对象的包装器时,这是一个挑战。对象也不总是按照您期望的方式运行。