4

Exchange Web サービスを使用して予定表アイテムを更新しようとしています。ItemChangeType を作成してから、ItemIdType を作成しています。ItemIdType.Id に使用する一意の ID がありますが、ChangeKey に使用するものはありません。省略すると、ErrorChangeKeyRequiredForWriteOperations が発生します。しかし、そこに何かを入れようとすると、ErrorInvalidChangeKey が発生します。

これを機能させるために何を使用できますか?

また、ItemChangeType.Item に使用する BaseItemIdType の最適な実装を判断しようとしています。これまでのところ、私は ItemIdType を使用しており、それは正しいと推測していますが、これに関する特に役立つドキュメントを見つけることができませんでした。

4

4 に答える 4

8

Haugeの答えをもう少し明確にするために、ChangeKeyはExchangeに格納され、アイテムの現在の状態を識別します。そのアイテムに変更を加えると、新しいChangeKeyが作成されます。

これにより、Exchangeは、更新がアイテムを見たときと同じアイテム状態に適用されていることを「認識」できます。つまり、チェックしてから変更されていません。

いくつかのコードは次の場所で入手できます。 http://msdn.microsoft.com/en-us/library/aa563020.aspx

于 2009-01-21T19:51:49.760 に答える
2

ItemIdType.Idプロパティがある場合は、Changekeyにもアクセスできる必要があります。これは、ItemIdTypeのプロパティでもあります。

ItemIdType.ChangeKey

Idプロパティと同様に、文字列であるため、Idを取得するときに取得できます。

よろしくジェスパーハウジ

于 2008-11-14T10:11:02.163 に答える
1

IDのみを知っている場合は、たとえばフォルダの場合、ChangeKeyを簡単に取得できます。

  private FolderIdType GetFullFolderID(string folderID)
  {
     GetFolderType request = new GetFolderType();
     request.FolderIds = new BaseFolderIdType[1];

     FolderIdType id = new FolderIdType();
     id.Id = folderID;
     request.FolderIds[0] = id;

     request.FolderShape = new FolderResponseShapeType();
     request.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;

     GetFolderResponseType response = _binding.GetFolder(request);

     FailOnError(response);

     FolderInfoResponseMessageType firmt = (FolderInfoResponseMessageType)response.ResponseMessages.Items[0];
     FolderType ft = (FolderType)firmt.Folders[0];
     id.ChangeKey = ft.FolderId.ChangeKey;

     return id;
  }
于 2009-08-17T08:34:46.850 に答える
1

Exchange を操作するには、Exchange Web サービスではなく、Exchange マネージ API を使用することをお勧めします。はるかに使いやすいです。詳細については、以下を参照してください。

https://msdn.microsoft.com/en-gb/library/dd877012(v=exchg.150).aspx

于 2010-11-12T10:36:19.110 に答える