【问题标题】:MS Graph API Update PlannerTask.ConversationThreadIdMS Graph API 更新 PlannerTask.ConversationThreadId
【发布时间】:2021-10-11 23:29:12
【问题描述】:

我想更新 PlannerTask 中的“ConversationThreadId”字段。

这是我的代码:

plannerTask = await graphClient.Planner.Tasks["XXXXXXXXX"].Request().GetAsync();
var eTagId = plannerTask.GetEtag();
plannerTask.ConversationThreadId = "YYYYYYYY";
await graphClient.Planner.Tasks[plannerTask.Id]
    .Request()
    .Header("Prefer", "return=representation")
    .Header("If-Match", eTagId)
    .UpdateAsync(plannerTask);

它会抛出这个错误:

消息:请求无效:出现了意外的“StartObject”节点 从 JSON 读取时找到名为“assignedBy”的属性 读者。需要一个“PrimitiveValue”节点。

我做错了什么?

谢谢

【问题讨论】:

    标签: c# microsoft-graph-api microsoft-planner microsoft-graph-plannertasks


    【解决方案1】:

    获取方法是:

    plannerTask = await graphClient.Planner.Tasks["XXXXXXXXX"].Request().GetAsync();
    var eTagId = plannerTask.GetEtag();
    var newTask = new PlannerTask {
            ConversationThreadId = "YYYYYYYY"
    };
    await graphClient.Planner.Tasks[plannerTask.Id]
        .Request()
        .Header("Prefer", "return=representation")
        .Header("If-Match", eTagId)
        .UpdateAsync(newTask);
    

    这是因为它不是 PUT 而是 PATCH,所以我们只应该发送已更改的字段。我正在发送完整的对象,这就是问题所在。现在我创建 newTask 并只在其中指定“ConversationThreadId”。这种方式对我来说就像一种魅力。

    【讨论】:

    • 是的,这就是问题所在。发布补丁时,您应该只发送您正在更改的字段。否则,您的请求会尝试“设置”多个只读字段(通过在请求中指定它们),这将被拒绝。在这种情况下,该字段的结构不会被正确解释,因为 assignBy 值不应该被写入。该错误消息具有误导性,我会看看我们是否可以对此采取任何措施。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2023-02-17
    • 2018-02-01
    相关资源
    最近更新 更多