Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 以静默方式更新PlannerTaskDetails失败_C#_Microsoft Graph Api - Fatal编程技术网

C# 以静默方式更新PlannerTaskDetails失败

C# 以静默方式更新PlannerTaskDetails失败,c#,microsoft-graph-api,C#,Microsoft Graph Api,我正在使用Microsoft Graph.Net SDK与Planner进行交互。 我刚刚创建了一个计划任务,我想设置Description属性 我的方法包括: 以下代码获取返回的PlannerTaskDetails对象,修改描述,然后更新它: var taskDetails = taskDetailsResult.Result; // Get Previous Task Details taskDetails.Description = description; task.Details =

我正在使用Microsoft Graph.Net SDK与Planner进行交互。 我刚刚创建了一个
计划任务
,我想设置Description属性

我的方法包括:

以下代码获取返回的
PlannerTaskDetails
对象,修改描述,然后更新它:

var taskDetails = taskDetailsResult.Result; // Get Previous Task Details
taskDetails.Description = description;

task.Details = await graphServiceClient
    .Planner
    .Tasks[task.Id]
    .Details
    .Request()
    .Header("If-Match", taskDetails.GetEtag())
    .UpdateAsync(taskDetails);
UpdateAsync返回,但返回null。 没有例外,空值显然不包含进一步的信息,并且描述没有更改

我使用Fiddler来监视来回的HTTP流量。我可以看到一个
补丁
请求被发送到Graph API,它设置了
If Match

奇怪的是,请求主体中的JSON对象有两次列出的description属性!第一次使用我的值,第二次使用null

我假设反序列化程序正在获取它看到的属性的最后一个值,这就是它不更新的原因


我做错了什么?

我想知道尝试重新使用检索到的
PlannerTaskDetails
对象是否导致了我在Description属性中看到的“设置两次”行为

我调整了代码,创建了一个新的
PlannerTaskDetails
对象,同时仍然使用从检索到的
PlannerTaskDetails
对象中的e-tag,而这一次JSON主体中唯一的属性是具有我所需值的Description属性的单个实例

var previousTaskDetails = taskDetailsResult.Result; // Get Previous Task Details
var newTaskDetails = new PlannerTaskDetails();
newTaskDetails.Description = description;

task.Details = await graphServiceClient
    .Planner
    .Tasks[task.Id]
    .Details
    .Request()
    .Header("If-Match", previousTaskDetails.GetEtag())
    .UpdateAsync(newTaskDetails);
UpdateAsync
仍然返回一个空对象,因此如果我想返回最新的
PlannerTaskDetails
对象以及
PlannerTask
对象,API调用的次数现在最多为4次:

  • 创建任务
  • 检索任务详细信息
  • 更新任务详细信息
  • 检索任务详细信息

我想知道尝试重新使用检索到的
PlannerTaskDetails
对象是否导致了我在Description属性中看到的“设置两次”行为

我调整了代码,创建了一个新的
PlannerTaskDetails
对象,同时仍然使用从检索到的
PlannerTaskDetails
对象中的e-tag,而这一次JSON主体中唯一的属性是具有我所需值的Description属性的单个实例

var previousTaskDetails = taskDetailsResult.Result; // Get Previous Task Details
var newTaskDetails = new PlannerTaskDetails();
newTaskDetails.Description = description;

task.Details = await graphServiceClient
    .Planner
    .Tasks[task.Id]
    .Details
    .Request()
    .Header("If-Match", previousTaskDetails.GetEtag())
    .UpdateAsync(newTaskDetails);
UpdateAsync
仍然返回一个空对象,因此如果我想返回最新的
PlannerTaskDetails
对象以及
PlannerTask
对象,API调用的次数现在最多为4次:

  • 创建任务
  • 检索任务详细信息
  • 更新任务详细信息
  • 检索任务详细信息

您正确地将代码更改为使用修补程序对象,而不是重用现有的
PlannerTaskDetail
。要获取更新的对象(如果支持),需要设置Preference标头

,第8.2.8.7节


.Header(“preference”,“return=representation”)
您正确地将代码更改为使用修补程序对象,而不是重用现有的
PlannerTaskDetail
。要获取更新的对象(如果支持),需要设置Preference标头

,第8.2.8.7节


.Header(“首选”、“返回=表示”)

Planner支持首选标头。此方法将返回任务详细信息的最新数据(包括您请求的更改)。Planner支持首选标头。此方法将返回任务详细信息的最新数据(包括您请求的更改)。