Microsoft Graph: não é possível atualizar a data de início ou término de um evento

Aug 18 2020

Estou usando o Microsoft Graph .NET SDK para atualizar eventos do Outlook. O código a seguir atualiza com êxito os atributos Subjecte Bodyde um evento. Mas quando tento atualizar as Starte / ou Enddatas do evento (que são do tipo dateTimeTimeZone ) recebo o erro mostrado abaixo:

Pergunta : Qual pode ser a causa do erro e como podemos resolvê-lo? Observe que o evento tem datas de início e término locais válidas como 8/21/2020 11:00AMe, 8/21/2020 11:30AMrespectivamente. Na verdade, no modo de depuração, VS2019está mostrando:Start.get returns null

Captura de tela do erro :

Código :

  1. O erro acima ocorre se eu descomentar a linha Start = { DateTime = "2020-08-20T08:30:00.0000000", TimeZone = "UTC" }abaixo.
  2. Os valores de authProvidere as "{id}"variáveis ​​não são tão relevantes para o erro, pois o código com os valores reais funciona bem sem a linha Start =....do código.

...

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);

Respostas

1 GlenScales Aug 20 2020 at 00:12

Você precisa de algo assim por causa do tipo de objeto que está sendo usado na propriedade

            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

Você precisa adicionar a data no formato abaixo. Espero que isso resolva seu problema.

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" } 
    };