Hier ist, was ich versuche zu tun:
Location
oder Subject
für einige Elemente Ich bekomme die Gegenstände mit:
FindItemsResults<Appointment> findResults = calendar.FindAppointments(new CalendarView(startDate, endDate));
Diese Abfrage funktioniert einwandfrei. Aber jedes Mal, wenn ich Update anrufe, um das Element zu speichern, bekomme ich eine Ausnahme:
Microsoft.Exchange.WebServices.Data.ServiceResponseException: One or more recipients are invalid.
Obwohl ich eine Ausnahme erhalte, wird das Objekt gespeichert und wird geändert, damit IsMeeting
auf true gesetzt wird! Jetzt ist das aktualisierte Element ein Treffen mit einem Organisator etc ... Dies ist effektiv Datenkorruption für mich.
Hier ist der Code. Es ist nicht komplizierter als das. Ich habe es getestet, indem ich nur Location
oder Subject
ändere und beide das Problem verursachen.
Vermisse ich etwas Konzept oder etwas? Das scheint ein ziemlich ungeheuerliches Problem zu sein.
FWIW, das ist EWS 1.1 gegen einen Office 365 Server.
So tigs Antwort funktioniert, wenn Sie den anderen Teilnehmern keine Terminupdates senden möchten. Um dies richtig beantworten zu können, müssen Sie jedoch den Teilnehmerstatus laden.
Standardmäßig wird versucht, den Teilnehmern Terminaktualisierungen zu senden. Ihr Terminobjekt hat jedoch nicht den Teilnehmerstatus geladen und explodiert daher. Wenn Sie die Bindung ausführen, sollten Sie die Teilnehmereigenschaften laden. Sie sollten den Organizer wahrscheinlich auch laden, um einen anderen Randfall abzudecken:
Dadurch werden die Teilnehmer ausgefüllt, wenn Sie ein Update durchführen möchten, das Aktualisierungen an die Teilnehmer sendet.
Allerdings gibt es dann noch einen Randfall, um den Sie sich Sorgen machen müssen. Wenn Sie einen Termin haben, zu dem keine Teilnehmer hinzugefügt wurden (nur der Organisator), kann sich EWS weiterhin beschweren und diesen Fehler auslösen. Es wird tatsächlich für Termine in einigen Staaten funktionieren, aber in anderen Staaten scheitern.
Die vollständigste Lösung ist also eine Kombination aus:
So würde das vollständige Beispiel ungefähr wie folgt aussehen:
%Vor%Um dieses Bit der Frage zu beantworten
"Obwohl ich eine Ausnahme erhalte, wird das Objekt gespeichert und wird geändert habe IsMeeting auf True gesetzt! Jetzt ist der aktualisierte Artikel ein Treffen mit einem Organisator etc ... Dies ist effektiv Daten Korruption für mich. "
Die Microsoft-Dokumentation gibt im Kleingedruckten an: " Eine Besprechungsanfrage ist nur ein Termin mit Teilnehmern. Sie können einen Termin in eine Besprechungsanfrage konvertieren, indem Sie dem Termin erforderliche Teilnehmer, optionale Teilnehmer oder Ressourcen hinzufügen "- wie hier zu sehen Ссылка
Mit anderen Worten, sobald Sie beliebige Teilnehmer haben, konvertiert Exchange sie automatisch in ein Meeting.
Tags und Links exchange-server exchangewebservices