EWS-Bezeichner in Exchange
Informieren Sie sich über Bezeichner in Exchange und wie Sie diese in Ihren EWS Managed API- und EWS-Anwendungen verwenden können.
Jedes Objekt im Exchange-Informationsspeicher verfügt über einen eindeutigen Bezeichner. Sie können den Bezeichner eines Objekts verwenden, um auf das Objekt zu verweisen und es von anderen Objekten zu unterscheiden. Die beiden am häufigsten verwendeten Bezeichner, mit denen Sie möglicherweise arbeiten, sind Ordner- und Elementbezeichner.
Damit Sie verstehen, was Bezeichner sind und warum diese in Ihrer Anwendung wichtig sind, ist es hilfreich, die Beziehung zwischen Objekten in Exchange zu verstehen. Wenn Ihre EWS Managed API- oder EWS-Anwendung mit Exchange kommuniziert, arbeiten Sie mit einer Objekthierarchie, die Postfach-, Ordner- und Elementobjekte enthält. Ein Informationsspeicher kann einen der folgenden Objekttypen aufweisen. In den meisten Fällen ist es ein Postfach auf dem Exchange-Server, aber es kann auch ein öffentlicher Ordner auf dem Exchange-Server sein. (Bedenken Sie, dass bei Exchange Online, Exchange Online als Teil von Office 365 und Exchange-Versionen ab Exchange 2013, öffentliche Ordner lediglich eine andere Art von Postfach und nicht eine andere Art von Informationsspeicher sind.) Der Informationsspeicher enthält Ordner und die Ordner enthalten Elemente, und alle diese Ordner und Elemente weisen einen Bezeichner auf, wie in der folgenden Abbildung dargestellt.
Abbildung 1: Postfach-, Ordner- und Elementhierarchie
EWS-Bezeichner
Bezeichner, die EWS für Ordner und Elemente verwendet, werden als EWS-Bezeichner oder EwsIds bezeichnet. EwsIds befinden sich in vielen verschiedenen Objekten innerhalb von EWS, werden jedoch für unterschiedliche Objekte anders bezeichnet. Da Sie diese Objekte möglicherweise in der Anwendung verwenden werden, sollten Sie verstehen, in welcher Beziehung diese Objekte zu der EwsId stehen.
Die Bezeichner in EWS gelten auch für die EWS Managed API. In der EWS Managed API sind die Bezeichner Eigenschaften der Objekte, die intern zur Zuordnung zu den EWS-Elementen verwaltet werden.
Tabelle 1. Objektbezeichner in EWS
Objekt | Bezeichner | Beziehung zu EwsId |
---|---|---|
CalendarItem |
Das untergeordnete Element ItemId enthält den eindeutigen Bezeichner des Kalenderelements. |
Das untergeordnete Element ItemId ist identisch mit der EwsId für dieses Element. |
ConversationId |
Das Id-Attribut enthält den Bezeichner für die Unterhaltung, von der dieses Element ein Teil ist. |
Das Id-Attribut ist identisch mit der EwsId für dieses Element. |
AttachmentId |
Stellt den eindeutigen Bezeichner der Anlage bereit. Das RootItemId-Attribut enthält den eindeutigen Bezeichner des Stamminformationsspeicherelements, an das die Anlage angefügt ist. |
Anlagen können andere Elemente im Exchange-Speicher sein. In diesem Fall entspricht die AttachmentId der EwsId. In allen Fällen ist rootItemId eine EwsId, da sie auf ein Element im Speicher verweist. |
PersonaId |
Das Id-Attribut gibt eine Zeichenfolge zurück, die den Bezeichner der Persona enthält. |
Das Id-Attribut ist identisch mit der EwsId für die Persona. |
ContactId |
Das Id-Attribut gibt eine Zeichenfolge zurück, die den Bezeichner des Kontakts enthält. |
Das Id-Attribut ist identisch mit der EwsId für den Kontakt. |
GroupId |
Das Id-Attribut gibt eine Zeichenfolge zurück, die den Bezeichner der Gruppe enthält. |
Das Id-Attribut ist identisch mit der EwsId für die Gruppe. |
AssociatedCalendarItemId |
Die Id-Attribut identifiziert das Kalenderelement, das einer MeetingMessage, MeetingRequest, MeetingResponse oder MeetingCancellation zugewiesen ist. |
Das Id-Attribut ist identisch mit der EwsId für das Kalenderelement. |
UserConfigurationProperties |
Der Id-Wert für dieses Element gibt die Bezeichnereigenschaft an. |
Dieser Bezeichner ist nicht direkt der EwsId zugeordnet, da es sich um einen Eigenschaftenbezeichner und nicht um ein Element handelt. |
OccurrenceItemId |
Das RecurringMasterId-Attribut identifiziert den Master eines wiederkehrenden Objekts. |
Der OccurrenceItemId-Wert ist nicht direkt der EwsId zugeordnet, RecurringMasterId jedoch schon, da es auf das allgemeine Objekt des wiederkehrenden Objekts verweist. |
StoreEntryId |
Enthält den Bezeichner für den Exchange-Informationsspeicher eines Elements. |
Der StoreEntryId-Wert ist nicht der EwsId zugeordnet, enthält jedoch den Bezeichner des Informationsspeichers, in dem die Elemente gespeichert werden. |
Arbeiten mit Bezeichnern
Der Exchange-Server verarbeitet Bezeichner auf viele verschiedene Arten. Berücksichtigen Sie beim Entwickeln Ihrer EWS Managed API oder EWS-Anwendung Folgendes:
Beim ItemID-Elementwert für Ordner und Elemente wird die Groß-/Kleinschreibung beachtet. Wenn Sie sich die Element-ID für einen Ordner oder ein Element ansehen, das vom FindItem-Vorgang (oder der FindItems EWS Managed API-Methode) zurückgegeben wird, denken Sie möglicherweise, dass es sich um ein Duplikat einer anderen Element-ID handelt. Ein oder mehrere Zeichen in den Element-IDs für die beiden Elemente weisen jedoch eine andere Groß-/Kleinschreibung auf.
Wenn die Element-ID in einer Datenbank zum späteren Abrufen speichern, empfehlen wir, die Feldgröße auf 512 Bytes festzulegen, damit es groß genug für die GUID ist.
Gehen Sie nicht davon aus, dass Ihre Element-ID immer gültig ist, wenn Sie das Element zu einem späteren Zeitpunkt abrufen müssen. Wenn ein Element im Speicher verschoben wird, kann sich die ID aufgrund der Verschiebung ändern. Ein Element wird tatsächlich kopiert, und es wird eine neue ID generiert, und dann wird das ursprüngliche Element gelöscht. Beachten Sie, dass Ordner-IDs unveränderlich sind und sich nicht ändern, wenn sie in den Speicher verschoben werden.
Bezeichner in Exchange sind nicht transparent. Die EwsId wird z. B. aus mehreren Datenelementen erstellt, die für Sie als Entwickler nicht wichtig sind, für Exchange jedoch schon.
Wenn Sie mit Elementen in Exchange arbeiten, müssen Sie auch das ChangeKey-Attribut beachten. Dieser Wert wird neben der Element-ID verwendet, um den Status eines Elements nachzuverfolgen. Jedes Mal, wenn ein Element geändert wird, wird ein neuer Änderungsschlüssel generiert. Beim Ausführen einer UpdateItem Operation können Sie das ChangeKey-Attribut zum Beispiel verwenden, um dem Server mitzuteilen, dass die Aktualisierung auf die aktuellste Version des Elements angewendet wird. Wenn eine andere Anwendung eine Änderung an dem Element vorgenommen hat, das Sie aktualisieren, stimmen die Änderungsschlüssel nicht überein, und Sie können die Aktualisierung nicht durchzuführen.
IDs des definierten Ordners
Exchange umfasst eine Vielzahl vordefinierter Postfachordnen angezeigt, von denen jedem ein Bezeichner zugeordnet wird, der als die ID des definierten Ordner bezeichnet wird. Diese werden von der WellKnownFolderName-Enumeration der EWS Managed API und dem DistinguishedFolderId-Element von EWS definiert. Sie können diese IDs des definierten Ordners verwenden, um einfacher auf einen der vordefinierten Ordner zu verweisen. Für den Ordner "Posteingang" können Sie zum Beispiel einfach "Posteingang" für den Bezeichner verwenden, anstatt den Ordnerbezeichner zu ermitteln.
Andere Ordner, die Sie zum Organisieren von E-Mail-Elementen erstellen, weisen auch eine ID auf, die für diesen Ordner eindeutig ist. Diese ID ändert sich nicht, selbst wenn Sie andere Eigenschaften des Ordners ändern.
Sie können IDs des definierten Ordners als Einstiegspunkt für Zugriffsrechte für Stellvertretung verwenden. Wenn Sie Zugriffsrechte für Stellvertretung initiieren, suchen Sie nach Elementen oder Ordnern, und geben die ID des definierten Ordners an, um den Suchbereich anzugeben. Wenn ein Stellvertreter auf den Server zugreift, wird ein Postfach-Element, das ein untergeordnetes Element des DistinguishedFolderId-Elements ist, verwendet, um das Postfach, auf das der Stellvertreter zugreifen kann, explizit anzugeben.
Behandeln von Fehlern
In jedem Programm wird hin und wieder ein Fehler angezeigt, und EWS-basierte Anwendungen sind keine Ausnahme (Wortspiel beabsichtigt). Möglicherweise werden einige Fehler in Bezug auf IDs im EWS-Element ResponseCode oder im Rahmen der ServiceError-Aufzählung der EWS Managed API angezeigt.
Die folgenden Fehler können in der EWS Managed API- oder EWS-Anwendung auftreten: Wenn Sie mit einer EWS Managed API-Anwendung arbeiten, handelt es sich bei den Fehlern in der Regel um Probleme mit Eigenschaftenwerten. Bei EWS-Anwendungen stehen die Fehler im Zusammenhang mit XML-Elementwerten oder -Operationen.
Tabelle 2. Fehler im Zusammenhang mit Bezeichnern
Error | Tritt auf | Beschreibung |
---|---|---|
ErrorCalendarCannotUseIdForOccurrenceId |
Der Wert von OccurenceID entspricht nicht einer gültigen Terminserie des Kalenders. |
Der Wert von OccurenceId, der in der Anforderung angegeben wurde, ist möglicherweise in der Struktur gültig, die Anforderung konnte jedoch keine Übereinstimmung mit einem wiederkehrenden Master finden. Die Terminserie wurde möglicherweise aus dem Kalender entfernt. Stellen Sie sicher, dass das Element immer noch vorhanden ist und dass Sie den korrekten Bezeichner verwenden. |
ErrorCalendarCannotUseIdForRecurringMasterId |
Das RecurringMasterId-Attribut entspricht keinem gültigen Vorkommnis des OccurrenceId-Elements. |
Der Wert von RecurringMasterId, der in der Anforderung angegeben wurde, ist möglicherweise in der Struktur gültig, die Anforderung konnte jedoch keine Übereinstimmung mit einem vorhandenen Vorkommnis des Elements finden. Die Vorkommnis des Elements wurde möglicherweise aus dem Kalender entfernt. Stellen Sie sicher, dass das Element immer noch vorhanden ist und dass Sie den korrekten Bezeichner verwenden. |
ErrorCannotUseFolderIdForItemId |
Das übergebene ID stellt einen Ordner anstelle eines Elements dar. |
Das Format des Bezeichners ist möglicherweise gültig, entspricht aber nicht den Erwartungen des Servers für den Vorgang. Stellen Sie sicher, dass Sie auf den korrekten Bezeichner für den Vorgang verweisen. |
ErrorCannotUseItemIdForFolderId |
Das übergebene ID stellt einen Ordner anstelle eines Elements dar. |
Das Format des Bezeichners ist möglicherweise gültig, entspricht aber nicht den Erwartungen des Servers für den Vorgang. Stellen Sie sicher, dass Sie auf den korrekten ID für den Vorgang verweisen. |
ErrorChangeKeyRequiredForWriteOperations |
Beim Ausführen bestimmter Aktualisierungsvorgänge muss ein gültiger Schlüssel angegeben werden. |
Sie haben beim Anfordern einer Aktualisierung entweder einen ChangeKey-Wert vergessen oder der Änderungsschlüssel war falsch. Stellen Sie sicher, dass Sie über den richtigen Änderungsschlüssel verfügen, wenn Sie Aktualisierungsvorgänge ausführen. |
ErrorInvalidAttachmentId |
Die Anlage wurde nicht in der Anlagensammlung für das Element gefunden. |
Dieser Antwortcode wird möglicherweise angezeigt, wenn Sie eine Anlage ID haben und die Anlage wird gelöscht wird, und Sie versuchen, rufen Sie die GetAttachment-Vorgang für die Anlagen-ID aufzurufen. Stellen Sie sicher, dass die Anlage in der Anlagensammlung vorhanden ist. |
ErrorInvalidChangeKey |
Ein ungültiger Änderungsschlüssel wurde übergeben. |
Beachten Sie, dass es für viele Vorgänge und Methoden nicht erforderlich ist, einen Änderungsschlüssel zu übergeben. Wenn Sie jedoch einen Änderungsschlüssel angeben, muss er gültig, aber nicht unbedingt aktuell sein. |
ErrorInvalidFolderId |
Der Ordner ID ist beschädigt. |
Stellen Sie sicher, dass Sie über einen korrekt formatierten und gültigen Bezeichner verfügen. |
ErrorInvalidId |
Die Struktur des ID und/oder des Änderungsschlüssels ist intern inkonsistent. |
Exchange hat ein Problem mit ID nach der Analyse festgestellt. Möglicherweise ist ein Fehler bei der Konvertierung aufgetreten. Dies kann z. B. auftreten, wenn Sie einen IdFormatType.HexEntryId für ein Element in Outlook haben, diesen aber in eine EwsId konvertieren, weil Sie davon ausgegangen sind, dass es sich um ein IdFormatType.EntryId-Format handelte. Stellen Sie sicher, dass Sie den richtigen Konvertierungstyp verwenden. |
ErrorInvalidIdEmpty |
Die Anwendung hat einen ID, der leer ist. |
Die Anwendung hat eine leere Zeichenfolge für den Bezeichner angegeben. Stellen Sie sicher, dass Sie über einen korrekt formatierten und gültigen Bezeichner verfügen. |
ErrorInvalidIdMalformed |
Die Struktur von ID ist intern inkonsistent. |
Exchange hat ein Problem mit ID nach der Analyse festgestellt. Die ID wurde möglicherweise nicht ordnungsgemäß konvertiert. Stellen Sie sicher, dass Sie den richtigen Konvertierungstyp verwenden. |
ErrorInvalidIdMalformedEwsLegacyIdFormat |
Ein Ordner oder ein Element ID, der bzw. das das Exchange 2007-Format verwendet, wurde für eine Anforderung mit einer Version von Exchange 2007 SP1 oder höher angegeben. |
Sie können Exchange 2007-IDs nicht in Anforderungen mit Exchange 2007 SP1 oder höher verwenden. Sie müssen die EWS-OperationConvertId oder die EWS Managed API-Methode ConvertId verwenden, um diese zuerst zu konvertieren. |
ErrorInvalidIdNotAnItemAttachmentId |
Die AttachmentId-Eigenschaft verweist nicht auf eine Elementanlage. |
Das Format des Bezeichners ist möglicherweise gültig, entspricht aber nicht den Erwartungen des Servers für den Vorgang. Stellen Sie sicher, dass Sie auf den korrekten Bezeichner für den Vorgang verweisen. |
ErrorInvalidIdReturnedByResolveNames |
Ein Kontakt in Ihrem Postfach ist beschädigt. |
Die EWS-Operation ResolveNamesoder die EWS Managed API-Methode ResolveName hat eine oder mehrere Bezeichner zurückgegeben, diese sind aber nicht gültig. Möglicherweise müssen Sie den Kontakt neu erstellen. |
ErrorInvalidIdStoreObjectIdTooLong |
Die Struktur von ID ist intern inkonsistent. |
Exchange hat ein Problem mit ID nach der Analyse festgestellt. Die ID wurde möglicherweise nicht ordnungsgemäß konvertiert. Stellen Sie sicher, dass Sie den richtigen Konvertierungstyp verwenden. |
ErrorInvalidIdTooManyAttachmentLevels |
Die Anlagenhierarchien überschreiten die maximale Tiefe von 255 Ebenen. |
Der Wert der AttachmentId-Eigenschaft, der in der Anforderung angegeben wurde, ist in der Struktur möglicherweise gültig, in der Hierarchie ist die angeforderte Anlage jedoch zu tief. Der Code hat möglicherweise versucht, ein Element jenseits der Grenze von 255 Ebenen anzufügen. |
ErrorInvalidImContactId |
Dieser Fehler kann zurückgegeben werden, wenn der Kontakt bei Verwendung der RemoveImContactFromGroup-Vorgang in der Sofortnachrichtengruppe nicht gefunden werden kann. Dieser Fehler tritt bei Clients auf, die auf Exchange Online und Exchange-Versionen ab Exchange 2013 abzielen. |
Der Wert der ContactId-Eigenschaft, der in der Anforderung angegeben wurde, ist in der Struktur möglicherweise gültig, im Postfach stimmen jedoch keine Kontakte mit dieser Struktur überein. Der Kontakt wurde möglicherweise bereits entfernt. |
ErrorInvalidImGroupId |
Dieser Fehler kann zurückgegeben werden, wenn der Kontakt bei Verwendung der RemoveImGroup-Vorgang nicht im Postfach gefunden werden kann. Dieser Fehler tritt bei Clients auf, die auf Exchange Online und Exchange-Versionen ab Exchange 2013 abzielen. |
Der Wert der GroupId-Eigenschaft, der in der Anforderung angegeben wurde, ist in der Struktur möglicherweise gültig, im Postfach stimmen jedoch keine Gruppen mit dieser Struktur überein. Die Gruppe wurde möglicherweise bereits entfernt. |
ErrorInvalidReferenceItem |
Der Elementbezeichner, auf den verwiesen wird, ist kein MessageType oder ExchangeWebServices.CalendarItemTypeType oder eines ihrer Nachfolger. Der Verweiselementbezeichner ist für ein CalendarItemType-Objekt , und der Organisator versucht, "Reply" oder "ReplyAll" zu verwenden. |
Das Format des Bezeichners ist möglicherweise gültig, entspricht aber nicht den Erwartungen des Servers für den Vorgang. Stellen Sie sicher, dass Sie auf den korrekten Bezeichner für den Vorgang verweisen. |
ErrorMissingManagedFolderId |
Die Eigenschaft von Richtlinie IDs, Eigenschaftentag 0x6732, für den Ordner ist nicht vorhanden. |
Der Ordner ist beschädigt. Sie sollten ihn neu erstellen. |
Konvertieren von Bezeichnern
Möglicherweise müssen Sie einen Bezeichner von einem Format in ein anderes konvertieren. Beispielsweise müssen Sie vielleicht einen Bezeichner von außerhalb von EWS, z. B. ein Bezeichner, der aus einer MAPI-Verbindung stammt, in ein Format konvertieren, das Ihre Anwendung verwenden kann. Dazu können Sie den EWS-Vorgang ConvertId oder die Methode ConvertId EWS Managed API verwenden.
Eine EntryID ist z. B. ein eindeutiger Bezeichner, der vom MAPI-Nachrichtenspeicher generiert wird, der vom Speicher zugewiesen wird, wenn das Element gespeichert wird. Um eine EntryID in der Anwendung zu verwenden, müssen Sie sie zuerst in eine EwsId konvertieren.
Outlook Web App verwendet eine eigene Version von Bezeichnern, genannt OwaId, in URLs, um auf Ordner und Elemente zuzugreifen. Wenn Ihre Anwendung auf in Outlook Web App zugreifen muss, müssen Sie die OwaId in eine EwsId konvertieren.
Sie können die ConvertId-Operation oder -Methode verwenden, um mehrere unterschiedliche Bezeichnerformate zu konvertieren.
Tabelle 3. Konvertierbare Bezeichnerformate in Exchange
Format | Beschreibung |
---|---|
EwsLegacyId |
Die EwsId, die für Exchange 2007 gilt. |
EwsId |
Die EwsId, die für Exchange Online und Exchange-Versionen ab Exchange 2007 SP1 gilt. |
StoreId |
Der Bezeichner für den Exchange-Informationsspeicher, in dem die Ordner und Elemente gespeichert werden. |
OwaId |
Der Outlook Web App-Bezeichner, der bei Outlook Web App in Exchange 2007 und Exchange Server 2010 verwendet wird. HINWEIS: Exchange Online und Exchange-Versionen ab Exchange 2013 verwenden die EwsId für Outlook Web App. |
EntryId |
Ein MAPI-Bezeichner, der allgemein als die PR_ENTRYID -Eigenschaft einer MAPI-Nachricht bekannt ist. |
HexEntryId |
Eine hexadezimal codierte Darstellung der PR_ENTRYID -Eigenschaft, die für den Ereignisbezeichner des Verfügbarkeitskalenders verwendet wird. Dies ist auch das Bezeichnerformat, das Outlook verwendet. |