web-dev-qa-db-ja.com

EWS:カレンダーの予定がキャンセルされているかどうかを確認します

VB.Netを使用してEWSにクエリを実行しようとしていますが、必要な予定のほとんどの属性を取得できますが、IsCancelled属性を取得しようとすると、次の例外が発生します:This property was requested, but it wasn't returned by the server.

IsCancelled属性に問題があるかどうか(つまり、常にtrueまたはfalseに設定されているか)をアドバイスできる人はいますか?

私たちの環境は混合環境であり、EWSはExchange 2007SP1から実行されていますが、2010サーバーがあります(1か月ほどでアップグレードに着手しようとしています)。

誰かがEWSを通じて利用可能なすべての属性に関するリソースを教えてもらえますか?リストは長く、私がまだ遭遇していない他の有用な宝石がそこにあると確信しています。

キャンセルされた会議や更新された会議など、リソースとして設定されたメールボックス内の予定の追跡に関するリソース(2010年には会議室を使用しましたが、まだありません)をいただければ幸いです。

ありがとう、

マット

5
Lima

プロパティのドキュメント によると、これはbool型であり、_Nullable<bool>_ではないため、should常に何かを返します。

_This property was requested, but it wasn't returned by the server_メッセージが表示されているという事実は、返されたアイテムに不適切なプロパティを要求していることを示している可能性があります(つまり、isCancelledタイプのEmailMessageプロパティを要求しています。

私が行うのは、単純なサニティチェックであり、返されたアイテムのリストがすべてタイプAppointmentであり、他のものではないことを確認します。

FindAppointmentsクラスのExchangeServiceメソッドを呼び出して、予定であるアイテムのみを検索することもできますが、個人的には、期待どおりに返されないという問題がいくつかありました。私がやったことは、FindItems<Appointment>(WellKnownFolderName.Calendar, new ItemView(1000))を呼び出してそれらをループすることでした。

3
Ben Pilbrow

試行錯誤の末、AppointmentSchema.AppointmentStateプロパティが必要な場合は、AppointmentSchema.IsCancelledプロパティもリクエストする必要があることがわかりました。

これが私が持っているコードです。

var calendarView = new CalendarView(startTime, endTime);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(room.Email.Address));
calendarView.PropertySet = new PropertySet(
    // AppointmentState is required for IsCancelled to work
    AppointmentSchema.AppointmentState,
    AppointmentSchema.IsCancelled
);
var roomBookings = exchangeService.FindAppointments(folderId, calendarView);
2
Joey