6

Exchange Server 2007 SP3 で EWS マネージ API 2.0 を使用しているときに、奇妙な問題に直面しています。

予定を作成して保存すると、次のコードを使用してその ID を取得します。

appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);

appointment.Id.UniqueId;

ローカル DB に保存して、後で会議の更新やキャンセルに使用できるようにします。

後で競合する会議を取得したい場合は、次のコードを使用します。

CalendarView view = new CalendarView(Start, End);
view.PropertySet = new PropertySet();
Folder rootfolder = Folder.Bind(service, WellKnownFolderName.Calendar);
//view.PropertySet.Add(AppointmentSchema.Resources);
view.PropertySet.Add(ItemSchema.Id);
view.PropertySet.Add(AppointmentSchema.Subject);
view.PropertySet.Add(AppointmentSchema.Start);
view.PropertySet.Add(AppointmentSchema.Duration);
view.PropertySet.Add(AppointmentSchema.End);
view.PropertySet.Add(AppointmentSchema.Organizer);
view.PropertySet.Add(AppointmentSchema.Id);
Mailbox mailbox = new Mailbox(Email);
FolderId id = new FolderId(WellKnownFolderName.Calendar, mailbox);
CalendarFolder folder = CalendarFolder.Bind(service, id);
FindItemsResults<Appointment> findResults = folder.FindAppointments(view);

//Iterating through the conflicting meetings returned by folder.FindAppointments
foreach (Appointment app in findResults.Items)
  {
     appts.Rows.Add(app.Subject, app.Start, app.End, app.Duration, app.Id.UniqueId);
  }

競合する会議の 1 つの ID にアクセスしたい場合、他のすべての情報は同じですが、ローカル DB にある ID とは異なります。自分の ID を使用して予定にバインドすることはできますが、問題は、同じ会議に 2 つの異なる ID があることです。EWS が予定の一意の ID を保存しない理由と (appointment.Id.UniqueId) が定数ではないのはなぜですか?

この問題の明確な解決策は見つかりませんでした。

4

3 に答える 3

6

予定自体には変更されない一意のIDはありませんが、予定にはICalUidプロパティがあります(一意のカレンダーアイテムIDだと思います):

appointment.ICalUid;

これは本当にユニークで変更されず、テストした限り、ミーティングは更新されます。1 人に対して 1000 のミーティングを生成しましたが、すべての ICalUid がユニークでした。試してみてください、それは私にとって役に立ちました:)

于 2013-08-26T19:03:30.163 に答える
4

これは、EWS マネージ API を使用しているユーザーが実際に直面する非常に一般的な問題です。
何らかの理由で (理由はわかりません)、予定が別のフォルダーに移動されると、一意の ID が変更されます。
あなたの質問と回答は、次の私の投稿で見つけることができます:
Exchange Web サービス: なぜ ItemId が一定でないのですか? 【続き】

于 2013-06-05T09:09:48.003 に答える