Microsoft Graph: невозможно обновить дату начала или окончания события

Aug 18 2020

Я использую Microsoft Graph .NET SDK для обновления событий Outlook. После кода успешно обновляет Subjectи Bodyатрибуты события. Но когда я пытаюсь обновить дату Startи / или Endдаты события (которые относятся к типу dateTimeTimeZone ), я получаю сообщение об ошибке, показанное ниже:

Вопрос : Что может быть причиной ошибки и как ее устранить? Обратите внимание, что у мероприятия есть действительные местные даты начала и окончания как 8/21/2020 11:00AMи 8/21/2020 11:30AMсоответственно. На самом деле в режиме отладки VS2019показывает:Start.get returns null

Скриншот ошибки :

Код :

  1. Вышеупомянутая ошибка возникает, если я раскомментирую строку Start = { DateTime = "2020-08-20T08:30:00.0000000", TimeZone = "UTC" }ниже.
  2. Значения authProviderи "{id}"переменные не имеют отношения к ошибке, так как код с реальными значениями отлично работает без строки Start =....кода.

...

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var @event = new Event
{
    Subject = "Test subject",
    Body= new ItemBody { Content = "Test body content"}
    //Start = { DateTime = "2020-08-20T08:30:00.0000000", TimeZone = "UTC" }
};

await graphClient.Me.Events["{id}"]
    .Request()
    .UpdateAsync(@event);

Ответы

1 GlenScales Aug 20 2020 at 00:12

Вместо этого вам нужно что-то подобное из-за того, что тип объекта используется в свойстве

            var @event = new Event
        {
            Subject = "Test subject",
            Body = new ItemBody { Content = "Test body content" },
            Start = new DateTimeTimeZone {  DateTime = "2020-08-20T08:30:00.0000000", TimeZone = "UTC" } 
        };
1 RajeevKumar Aug 20 2020 at 04:06

Вам нужно добавить дату в формате ниже. Надеюсь, это решит вашу проблему.

var @event = new Event
    {
        Subject = "Test subject",
        Body = new ItemBody { Content = "Test body content" },
        Start = new DateTimeTimeZone {  DateTime = "2020-08-20T08:30:00.0000000", TimeZone = "GMT Standard Time" } 
    };