【问题标题】:Unable to create ToDo Task using Graph API v1.0无法使用 Graph API v1.0 创建 ToDo 任务
【发布时间】:2020-11-25 09:54:38
【问题描述】:

我正在尝试使用 graph api v1.0 的 ToDo Task 功能使用以下代码创建任务

var result = graphServiceClient.Users[outlookUserId].Todo.Lists[listid].Tasks.Request().AddAsync(todoTask).Result;

但是,我收到以下错误:

代码:invalidRequest 消息:名为“microsoft.toDo.todoTask”的类型 模型无法解决。当模型可用时,每个 类型名称必须解析为有效类型。内部错误:代码: InvalidModel AdditionalData:日期:2020-11-25T09:41:04 请求 ID: 39794548-8f63-443e-a8bc-76ad6091dc8d 客户端请求 ID: 39794548-8f63-443e-a8bc-76ad6091dc8d ClientRequestId: 39794548-8f63-443e-a8bc-76ad6091dc8d

为了解决上述问题,我将 todoTask 的 odatatype 设置为 null,但又遇到了另一个异常:

代码:invalidRequest 消息:一个名为的类型 模型无法解析“microsoft.toDo.dateTimeTimeZone”。 当模型可用时,每个类型名称都必须解析为有效的 类型。内部错误:代码:InvalidModel AdditionalData:日期: 2020-11-25T09:43:27 请求 ID:0780add8-3f17-40c5-a92b-e9e62ad08bf8 客户端请求 ID:0780add8-3f17-40c5-a92b-e9e62ad08bf8 ClientRequestId: 0780add8-3f17-40c5-a92b-e9e62ad08bf8

为了解决上述问题,我将类型为 DateTimeZone 的 todoTask 的所有数据成员的 odatatype 设置为 null,但随后出现以下异常:

代码:invalidRequest 消息:名为“microsoft.toDo.itemBody”的类型 模型无法解决。当模型可用时,每个 类型名称必须解析为有效类型。内部错误:代码: InvalidModel AdditionalData:日期:2020-11-25T09:46:11 请求 ID: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592 客户端请求 ID: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592 ClientRequestId: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592

为了解决上述问题,我将 todoTask 主体的 odatatype 设置为 null,但现在我遇到了以下我无法解决的异常:

代码:generalException 消息:内部服务器错误内部错误: AdditionalData: 日期: 2020-11-25T09:48:23 request-id: f5d52f43-c0b4-425e-83ec-652fadb7abf9 客户端请求 ID: f5d52f43-c0b4-425e-83ec-652fadb7abf9 ClientRequestId: f5d52f43-c0b4-425e-83ec-652fadb7abf9

对于我们的应用程序,我们需要创建任务并同步到 Outlook,因为这将投入生产,我们不能使用测试版。谁能帮我保存任务。

更新:

这是我如何设置 TodoTask 对象的代码:

var todoTask = new TodoTask();
todoTask.Title = "Subject";
todoTask.DueDateTime = new DateTimeTimeZone() { DateTime = dueDate.Date.ToString()};
todoTask.Status = TaskStatus.NotStarted;
todoTask.Importance = Importance.Normal;
todoTask.Body = new ItemBody
{
     Content = "Test",
     ContentType = BodyType.Text
};
todoTask.IsReminderOn = true;
todoTask.ReminderDateTime = new DateTimeTimeZone() { 
     DateTime = reminderTime.Value.ToString() };
todoTask.Extensions = new TodoTaskExtensionsCollectionPage();
todoTask.Extensions.Add(new OpenTypeExtension{
     ExtensionName = "TestProperty", 
     AdditionalData = new Dictionary<string,object>{{"MyProp","MyValue"}}});

【问题讨论】:

  • 我尝试在 POSTMAN、Microsoft Graph Explorer 中重现相同的 Graph API 调用 - 它适用于我。我看到您使用的是 SDK,因此请确保您使用最新的 NuGet 包,看看是否可以重现该问题。
  • 我尝试使用最新的 SDK,但仍然遇到同样的问题。
  • 让我看看这个...
  • 请分享您如何设置var todoTask = new TodoTask的完整代码供我们测试。

标签: microsoft-graph-api azure-ad-graph-api microsoft-graph-sdks microsoft-todo


【解决方案1】:

将odatatype设置为null后,还需要为DueDateTimeReminderDateTime设置TimeZone属性。

例如:

        var todoTask = new TodoTask();
        todoTask.Title = "Subject2";
        todoTask.ODataType = null;
        DateTime dueDate = DateTime.UtcNow.Date;
        DateTime reminderTime = DateTime.UtcNow.Date;
        todoTask.DueDateTime = new DateTimeTimeZone() {
            TimeZone = "UTC",
            ODataType = null,
            DateTime = dueDate.Date.ToString() 
        };
        todoTask.Status = TaskStatus.NotStarted;
        todoTask.Importance = Importance.Normal;
        todoTask.Body = new ItemBody
        {
            ODataType = null,
            Content = "Test",
            ContentType = BodyType.Text
        };
        todoTask.IsReminderOn = true;
        todoTask.ReminderDateTime = new DateTimeTimeZone()
        {
            TimeZone = "UTC",
            ODataType = null,
            DateTime = reminderTime.Date.ToString()
        };
        todoTask.Extensions = new TodoTaskExtensionsCollectionPage();
        todoTask.Extensions.Add(new OpenTypeExtension
        {
            ExtensionName = "TestProperty",
            AdditionalData = new Dictionary<string, object> { { "MyProp", "MyValue" } }
        });

【讨论】:

    猜你喜欢
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    相关资源
    最近更新 更多