【问题标题】:Updating PlannerTaskDetails silently fails以静默方式更新 PlannerTaskDetails 失败
【发布时间】:2018-02-21 03:10:04
【问题描述】:

我正在使用 Microsoft Graph .Net SDK 与 Planner 进行交互。 我刚刚创建了一个PlannerTask,我想设置描述属性。

我的方法包含在:How can I create a planner task with a 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。 也不例外,null显然不包含更多信息,并且Description没有改变。

我使用 Fiddler 来监控来回的 HTTP 流量。我可以看到 PATCH 请求正在发送到 Graph API,并且它设置了 If-Match 标头。

奇怪的是,请求正文中的 JSON 对象的 description 属性列出了两次!第一次用我的值,第二次用空值。

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

我做错了什么?

【问题讨论】:

    标签: c# microsoft-graph-api


    【解决方案1】:

    您正确地更改了代码以使用补丁对象,而不是重用现有的PlannerTaskDetail。要取回更新的对象(如果支持),您需要设置首选标头。

    http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part1-protocol/odata-v4.0-errata03-os-part1-protocol-complete.html#_Toc453752234,第 8.2.8.7 节

    .Header("prefer", "return=representation")

    【讨论】:

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

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

    我调整了我的代码以创建一个新的 PlannerTaskDetails 对象,同时仍然使用检索到的 PlannerTaskDetails 对象中的电子标签,这一次 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:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多