Durchführen seitenweiter Suchen mithilfe von EWS in ExchangePerform paged searches by using EWS in Exchange

Erfahren Sie, wie Sie Auslagerungs Suchvorgänge in ihrer verwaltete EWS-API-oder EWS-Anwendung durchführen, die auf Exchange abzielt.Find out how to perform paged searches in your EWS Managed API or EWS application that targets Exchange.

Paging ist ein Feature in EWS, mit dem Sie die Größe der Ergebnisse einer Suche steuern können.Paging is a feature in EWS that enables you to control the size of the results of a search. Anstatt das gesamte Resultset in einer EWS-Antwort abzurufen, können Sie kleinere Sätze in mehreren EWS-Antworten abrufen.Rather than retrieve the entire result set in one EWS response, you can retrieve smaller sets in multiple EWS responses. Halten Sie sich beispielsweise an einen Benutzer mit 10.000 e-Mail-Nachrichten in Ihrem Posteingang.For example, consider a user with 10,000 email messages in their Inbox. Theoretisch könnten Sie alle 10.000-e-Mails in einer sehr großen Antwort abrufen, aber Sie können dies aus Bandbreiten-oder Leistungsgründen in mehr verwaltbare Abschnitte unterteilen.Hypothetically, you could retrieve all 10,000 emails in one very large response, but you might want to break that up into more manageable chunks for bandwidth or performance reasons. Paging bietet Ihnen die Tools, die genau dies tun.Paging gives you the tools to do just that.

Hinweis

Sie können zwar hypothetisch 10.000-Elemente in einer Anforderung abrufen, in Wirklichkeit ist dies jedoch aufgrund der EWS-Drosselung unwahrscheinlich.While you can hypothetically retrieve 10,000 items in one request, in reality, this is unlikely due to EWS throttling. Weitere Informationen finden Sie unter EWS-Drosselung in Exchange.To find out more, see EWS throttling in Exchange.

Tabelle 1. Paging-Parameter im verwaltete EWS-API und EWSTable 1. Paging parameters in the EWS Managed API and EWS

So konfigurieren oder rufen Sie den...To configure or retrieve the… Verwenden Sie im verwaltete EWS-API die...In the EWS Managed API, use… Verwenden Sie in EWS die...In EWS, use…
Maximale Anzahl von Elementen oder Ordnern in einer AntwortMaximum number of items or folders in a response
Der PageSize -Parameter für den ItemView-Konstruktor oder den folderview-KonstruktorThe pageSize parameter to the ItemView constructor or the FolderView constructor
Oder:Or
Die PagedView. PageSize -EigenschaftThe PagedView.PageSize property
Das MaxEntriesReturned -Attribut für das IndexedPageItemView -Element oder das IndexedPageFolderView -ElementThe MaxEntriesReturned attribute on the IndexedPageItemView element or the IndexedPageFolderView element
Ausgangspunkt in der Liste der Elemente oder OrdnerStarting point in the list of items or folders
Der offsetBasePoint -Parameter für den ItemView -Konstruktor oder den folderview -KonstruktorThe offsetBasePoint parameter to the ItemView constructor or the FolderView constructor
Oder:Or
Die PagedView. OffsetBasePoint -EigenschaftThe PagedView.OffsetBasePoint property
Das Basepoint -Attribut für das IndexedPageItemView -Element oder das IndexedPageFolderView -ElementThe BasePoint attribute on the IndexedPageItemView element or the IndexedPageFolderView element
Offset vom AusgangspunktOffset from the starting point
Der Offset -Parameter für den ItemView -Konstruktor oder den folderview -KonstruktorThe offset parameter to the ItemView constructor or the FolderView constructor
Oder:Or
Die PagedView. Offset -EigenschaftThe PagedView.Offset property
Das Offset -Attribut für das IndexedPageItemView -Element oder das IndexedPageFolderView -ElementThe Offset attribute on the IndexedPageItemView element or the IndexedPageFolderView element
Gesamtzahl der Ergebnisse auf dem ServerTotal number of results on the server
Die FindItemsResults. Total count -Eigenschaft oder die FindFoldersResults. Total count -EigenschaftThe FindItemsResults.TotalCount property or the FindFoldersResults.TotalCount property
Das TotalItemsInView -Attribut für das RootFolder (FindItemResponseMessage)- Element oder das RootFolder (FindFolderResponseMessage)- ElementThe TotalItemsInView attribute on the RootFolder (FindItemResponseMessage) element or the RootFolder (FindFolderResponseMessage) element
Offset des ersten Elements oder Ordners, der nicht in der aktuellen Antwort enthalten istOffset of first item or folder not included in current response
Die FindItemsResults. NextPageOffset -Eigenschaft oder die FindFoldersResults. NextPageOffset -EigenschaftThe FindItemsResults.NextPageOffset property or the FindFoldersResults.NextPageOffset property
Das IndexedPagingOffset -Attribut für das RootFolder -ElementThe IndexedPagingOffset attribute on the RootFolder element
Indikator, dass die Antwort das letzte Element oder den letzten Ordner in der Liste enthält.Indicator that response includes the last item or folder in the list
Die FindItemsResults. MoreAvailable -Eigenschaft oder die FindFoldersResults. MoreAvailable -EigenschaftThe FindItemsResults.MoreAvailable property or the FindFoldersResults.MoreAvailable property
Das IncludesLastItemInRange -Attribut für das RootFolder -ElementThe IncludesLastItemInRange attribute on the RootFolder element

Funktionsweise von PagingHow paging works

Um zu verstehen, wie das Paging funktioniert, ist es hilfreich, die Nachrichten in einem Ordner als nebeneinander in einem Feld außerhalb Ihres Hauses nebeneinander liegenden Plakaten zu visualisieren.To understand how paging works, it's helpful to visualize the messages in a folder as billboards lined up side by side in a field outside your house. Einige dieser Plakate können Sie in einem magischen Fenster sehen.You can see some of these billboards through a magical window. Sie haben die Möglichkeit, die Größe des Fensters zu ändern (um mehr oder weniger Billboards gleichzeitig anzuzeigen) und das Fenster zu wechseln (um zu steuern, welche Billboards angezeigt werden).You have the ability to change the size of the window (to see more or fewer billboards at once) and to move the window (to control which billboards you can see). Bei dieser Manipulation des Fensters handelt es sich um Paging.This manipulation of the window is paging.

Wenn Sie Ihre Anforderung an den Exchange-Server senden, geben Sie die Größe des Fensters im Hinblick auf die Anzahl der zurückzugebenden Elemente an.When you send your request to the Exchange server, you specify the size of your window in terms of how many items to return. Sie legen die Position des Fensters fest, indem Sie einen Anfangspunkt (entweder den Anfang der Linien oder das Ende der Position) und einen Offset von diesem Anfangspunkt angeben, der in einer Anzahl von Elementen ausgedrückt wird.You set the position of the window by specifying a starting point (either the beginning of the line or the end of the line) and an offset from that starting point, expressed in a number of items. Der Anfang des Fensters ist die Anzahl der Elemente, die vom Offset vom Ausgangspunkt angegeben werden.The beginning of the window is the number of items specified by the offset from the starting point.

Wo Paging wird ein bisschen interessanter ist in der Antwort des Servers, und wie Ihre Anwendung diese Antwort verwenden können, um die nächste Anforderung zu gestalten.Where paging gets a bit more interesting is in the server's response, and how your application can use that response to shape its next request. Der Server enthält drei Informationen, die Sie verwenden können, um zu bestimmen, wie Sie Ihr "Fenster" für Ihre nächste Anforderung konfigurieren:The server gives you three pieces of information that you can use to determine how to configure your "window" for your next request:

  • Gibt an, ob die Ergebnisse in der Antwort das letzte Element in der Gesamtergebnismenge auf dem Server enthalten.Whether the results in the response include the last item in the overall result set on the server.

  • Die Gesamtzahl der Elemente in der Ergebnisgruppe auf dem Server.The total number of items in the result set on the server.

  • Was der nächste Offsetwert sein soll, wenn Sie das Fenster auf das nächste Element im Resultset heraufsetzen möchten, das in der aktuellen Antwort nicht enthalten ist.What the next offset value should be, if you want to advance your window to the next item in the result set that isn't included in the current response.

Lassen Sie uns ein einfaches Beispiel betrachten.Let's look at a simple example. Stellen Sie sich einen Posteingang mit 15 Nachrichten vor.Imagine an Inbox with 15 messages in it. Ihre Anwendung sendet eine anfängliche Anforderung zum Abrufen von maximal 10 Elementen, beginnend am Anfang der Liste der Nachrichten (sodass der Offset NULL ist).Your application sends an initial request to retrieve a maximum of 10 items, starting at the beginning of the list of messages (so the offset is zero). Der Server antwortet mit den ersten 10 Nachrichten und gibt an, dass die Antwort nicht das letzte Element enthält, dass es insgesamt 15 Elemente gibt und dass der nächste Offset 10 sein sollte.The server responds with the first 10 messages, and indicates that the response does not include the last item, that there are a total of 15 items, and that the next offset should be 10.

Abbildung 1. Anfordern von 10 Elementen bei Offset 0 vom Anfang einer Liste mit 15 ElementenFigure 1. Requesting 10 items at offset 0 from the beginning of a list of 15 items

Diagramm mit den Ergebnissen des Anforderns von 10 Elementen bei Offset 0 am dem Anfang einer Liste mit 15 Elementen.

Die Anwendung sendet dann die gleiche Anforderung erneut an den Server, wobei die einzige Änderung darin besteht, dass der Offset jetzt 10 ist.Your application then resends the same request to the server, with the only change being that the offset is now 10. Der Server gibt die letzten fünf Elemente zurück und gibt an, dass die Antwort das letzte Element enthält, dass es insgesamt 15 Elemente gibt und dass der nächste Offset 15 sein sollte (obwohl Sie natürlich das Ende erreicht haben, gibt es keinen nächsten Offset.)The server returns the last five items, and indicates that the response does include the last item, that there are a total of 15 items, and that the next offset should be 15 (though of course, you've reached the end, so there won't be a next offset.)

Abbildung 2. Anfordern von 10 Elementen bei Offset 10 vom Anfang einer Liste mit 15 ElementenFigure 2. Requesting 10 items at offset 10 from the beginning of a list of 15 items

Diagramm mit den Ergebnissen des Anforderns von 10 Elementen bei Offset 0 ab dem Anfang einer Liste mit 16 Elementen, wenn das 16. Element dem Anfang der Liste hinzugefügt wurde.

Entwurfsüberlegungen für das PagingDesign considerations for paging

Das Beste aus dem Paging in Ihrer Anwendung herauszunehmen, erfordert einige Überlegungen.Making the most out of paging in your application does require some consideration. Wie groß ist beispielsweise die Größe des Fensters?For example, how large do you make your "window"? Was tun Sie, wenn sich die Ergebnisse auf dem Server ändern, während Sie Ihr "Fenster" verschieben?What do you do if the results on the server change while you're moving your "window"?

Bestimmen der Größe des FenstersDetermine the size of your window

Es gibt keine maximale Anzahl von Einträgen in einer Größe, die alle Anwendungen verwenden sollten.There is no "one-size-fits-all" maximum number of entries that all applications should use. Die Bestimmung der Nummer, die für Ihre Anwendung richtig ist, hängt von verschiedenen Faktoren ab.Determining the number that's right for your application depends on several different factors. Es ist jedoch hilfreich, die folgenden Richtlinien im Hinterkopf zu behalten:However, it's helpful to keep the following guidelines in mind:

  • Standardmäßig schränkt Exchange die maximale Anzahl von Elementen ein, die in einer einzigen Anforderung an 1000 zurückgegeben werden können.By default, Exchange limits the maximum number of items that can be returned in a single request to 1000.

  • Wenn Sie die maximale Anzahl von Einträgen auf eine größere Zahl festlegen, müssen weniger Anforderungen zum Abrufen aller Elemente gesendet werden, sodass die Antworten nicht länger gewartet werden müssen.Setting the maximum number of entries to a larger number results in having to send fewer requests to get all items, at the cost of having to wait longer for responses.

  • Wenn Sie die maximale Anzahl von Einträgen auf eine kleinere Zahl festlegen, erhalten Sie schnellere Antwortzeiten, wobei mehr Anforderungen zum Abrufen aller Elemente gesendet werden müssen.Setting the maximum number of entries to a smaller number results in quicker response times, at the cost of having to send more requests to get all items.

Behandeln von Änderungen an der ErgebnismengeHandling changes to the result set

Im einfachen Beispiel weiter oben in diesem Artikel ist die Anzahl der Elemente im Posteingang des Benutzers konstant geblieben.In the simple example earlier in this article, the number of items in the user's Inbox remained constant. In Wirklichkeit kann sich die Anzahl der Elemente in einem Posteingang jedoch häufig ändern.However, in reality, the number of items in an Inbox can change frequently. Neue Nachrichten können eintreffen, und Elemente können jederzeit gelöscht oder verschoben werden.New messages can arrive and items can be deleted or moved at any time. Wie wirkt sich dies jedoch auf die Auslagerungsdatei aus?But how does this impact paging? Lassen Sie uns das frühere Beispielszenario ändern, um es herauszufinden.Let's modify the earlier example scenario to find out.

Wir beginnen erneut mit den 15 Elementen im Posteingang des Benutzers und senden die gleiche anfängliche Anforderung.We'll start again with the 15 items in the user's Inbox, and send the same initial request. Wie zuvor antwortet der Server mit den ersten 10 Nachrichten und gibt an, dass die Antwort nicht das letzte Element enthält, dass insgesamt 15 Elemente vorhanden sind und dass der nächste Offset 10 sein sollte, wie in Abbildung 1 dargestellt.As before, the server responds with the first 10 messages, and indicates that the response does not include the last item, that there are a total of 15 items, and that the next offset should be 10, as shown in Figure 1.

Während Ihre Anwendung diese 10 Elemente verarbeitet, kommt eine neue Nachricht im Posteingang an und wird dem Resultset auf dem Server hinzugefügt.Now, while your application is processing those 10 items, a new message arrives in the Inbox and is added to the result set on the server. Die Anwendung sendet die gleiche Anforderung erneut an den Server (nur mit dem Offset auf 10).Your application resends the same request to the server (only with the offset set to 10). Dieses Mal erhält der Server sechs Elemente zurück und gibt an, dass insgesamt 16 Elemente in der Ergebnisgruppe vorhanden sind.This time the server gets back six items, and indicates that there are a total of 16 items in the result set.

An diesem Punkt Fragen Sie sich möglicherweise, ob dies sogar ein Problem ist.At this point you might be wondering if this is even a problem. Immerhin haben Sie 16 Elemente zurück über die beiden Antworten, also warum all die Aufregung?After all, you got 16 items back over the two responses, so why all the fuss? Die Antwort hängt davon ab, an welcher Stelle in der Liste das neue Element eingefügt wird.The answer depends on where in the list the new item is placed. Wenn die Liste so sortiert ist, dass die ältesten Elemente (nach Empfangsdatum/-Uhrzeit) zuerst vorhanden sind, gibt es in diesem Szenario keinen Anlass zur Besorgnis.If the list is sorted so that the oldest items (by received date/time) are first, there's no cause for concern in this scenario. Das neue Element wird am Ende der Liste eingefügt und in die zweite Antwort aufgenommen.The new item will be placed at the end of the list, and will be included in the second response.

Abbildung 3. Anfordern von 10 Elementen bei Offset 10 vom Anfang einer Liste mit 16 Elementen, wobei das 16. Element in der Liste neu istFigure 3. Requesting 10 items at offset 10 from the beginning of a list of 16 items, with the 16th item in the list being new

Diagramm mit den Ergebnissen des Anforderns von 10 Elementen bei Offset 10 ab dem Anfang einer Liste mit 16 Elementen, wenn das 16. Element dem Ende der Liste hinzugefügt wurde.

Wenn die Liste so sortiert ist, dass die neuesten Elemente zuerst sind, handelt es sich um eine andere Geschichte.If the list is sorted so that the newest items are first, it's a different story. In diesem Fall wäre das erste Element in der zweiten Anforderung das letzte Element aus der vorherigen Anforderung und die restlichen fünf Elemente aus dem ursprünglichen 15.In this case, the first item in the second request would be the last item from the previous request plus the remaining five items from the original 15. Um es in Bezug auf unser imaginäres magisches Fenster zu setzen, haben Sie die Position Ihres Fensters um 10 verschoben, aber auch die Plakate wurden um 1 verschoben.To put it in terms of our imaginary magical window, you shifted your window's position by 10, but the billboards themselves also shifted by 1.

Abbildung 4. Anfordern von 10 Elementen bei Offset 10 vom Anfang einer Liste mit 16 Elementen, wobei das erste Element in der Liste neu istFigure 4. Requesting 10 items at offset 10 from the beginning of a list of 16 items, with the first item in the list being new

Diagramm mit den Ergebnissen des Anforderns von 10 Elementen bei Offset 10 ab dem Anfang einer Liste mit 16 Elementen, wenn das 16. Element dem Anfang der Liste hinzugefügt wurde.

Eine Möglichkeit zum Erkennen einer Änderung an den Ergebnissen auf dem Server besteht darin, das Konzept eines Ankerelements zu verwenden.One way to detect a change to the results on the server is to use the concept of an anchor item. Ein Ankerelement ist ein zusätzliches Element in der Antwort, das nicht zusammen mit den restlichen Ergebnissen verarbeitet wird, sondern zum Vergleichen mit den nächsten Ergebnissen verwendet wird, um zu ermitteln, ob die Elemente selbst verschoben wurden.An anchor item is an additional item in your response that is not processed along with the rest of the results, but is used to compare with the next results to see if the items themselves have shifted. Wenn die Anwendung eine Fenstergröße von 10 verwendet, legen Sie die maximale Anzahl von Elementen, die auf 11 zurückgegeben werden sollen, in unserem einfachen Beispiel fest.Building again on our simple example, if your application is using a "window" size of 10, you actually set the maximum number of items to return to 11. Ihre Anwendung verarbeitet die ersten 10 Elemente in der Antwort wie gewohnt.Your application processes the first 10 items in the response as usual. Für das letzte Element speichern Sie den Bezeichner des Elements als Anker und geben dann die nächste Anforderung mit einem Offset von 10 aus.For the last item, you save the item's identifier as an anchor, then issue the next request with an offset of 10. Wenn sich die Daten nicht geändert haben, sollte das erste Element in der zweiten Antwort eine Element-ID aufweisen, die mit dem Anker übereinstimmt.If the data has not changed, the first item in the second response should have an item identifier that matches the anchor. Wenn die Element-IDs nicht übereinstimmen, wissen Sie, dass die Daten entfernt oder in die Teile der Liste eingefügt wurden, die Sie bereits "ausgelagert" haben.If the item identifiers don't match, you know that the data has been removed or inserted in the parts of the list you have already "paged" over.

Selbst wenn Sie wissen, dass die Daten geändert wurden, müssen Sie dennoch entscheiden, wie Sie reagieren sollen.Even when you know that the data has changed, you still need to decide how to react. Für diese Frage gibt es auch keine One-size-fits-all-Antwort.There isn't a one-size-fits-all answer for this question either. Ihre Aktionen hängen von der Art der Anwendung und der Wichtigkeit der Erfassung aller Elemente ab.Your actions will depend on the nature of your application and how critical it is to capture all items. Sie können ihn möglicherweise ganz ignorieren, den Prozess von Anfang oder zurückverfolgen und versuchen zu ermitteln, wo die Änderung vorging.You might ignore it altogether, restart the process from the beginning, or back track and try to detect where the change happened.

Beispiel: Durchführen einer ausgelagerten Suche mithilfe der verwaltete EWS-APIExample: Perform a paged search by using the EWS Managed API

Das Paging wird von den folgenden verwaltete EWS-API-Methoden unterstützt:Paging is supported by the following EWS Managed API methods:

Wenn Sie die verwaltete EWS-API verwenden, konfiguriert ihre Anwendung das Paging mit der ItemView -oder der folderview -Klasse und empfängt Informationen vom Server zum Paging von der FindItemsResults -oder der FindFoldersResults -Klasse.If you are using the EWS Managed API, your application configures paging with the ItemView or FolderView class and receives information from the server regarding paging from the FindItemsResults or FindFoldersResults class.

Im folgenden Beispiel werden alle Elemente in einem Ordner mithilfe einer ausgelagerten Suche abgerufen, die fünf Elemente in jeder Antwort zurückgibt.The following example retrieves all the items in a folder using a paged search that returns five items in each response. Außerdem ruft es ein zusätzliches Element ab, das als Anker dient, um Änderungen an den Ergebnissen auf dem Server zu erkennen.It also retrieves an additional item to serve as an anchor to detect changes to the results on the server.

In diesem Beispiel wird davon ausgegangen, dass das ExchangeService-Objekt mit gültigen Werten in den Credentials- und Url-Eigenschaften initialisiert wurde.This example assumes that the ExchangeService object has been initialized with valid values in the Credentials and Url properties.

using Microsoft.Exchange.WebServices.Data;
static void PageSearchItems(ExchangeService service, WellKnownFolderName folder)
{
    int pageSize = 5;
    int offset = 0;
    // Request one more item than your actual pageSize.
    // This will be used to detect a change to the result
    // set while paging.
    ItemView view = new ItemView(pageSize + 1, offset);
    view.PropertySet = new PropertySet(ItemSchema.Subject);
    view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
    view.Traversal = ItemTraversal.Shallow;
    bool moreItems = true;
    ItemId anchorId = null;
    while (moreItems)
    {
        try
        {
            FindItemsResults<Item> results = service.FindItems(folder, view);
            moreItems = results.MoreAvailable;
            if (moreItems &amp;&amp; anchorId != null)
            {
                // Check the first result to make sure it matches
                // the last result (anchor) from the previous page.
                // If it doesn't, that means that something was added
                // or deleted since you started the search.
                if (results.Items.First<Item>().Id != anchorId)
                {
                    Console.WriteLine("The collection has changed while paging. Some results may be missed.");
                }
            }
            if (moreItems)
                view.Offset += pageSize;
            anchorId = results.Items.Last<Item>().Id;
            // Because you're including an additional item on the end of your results
            // as an anchor, you don't want to display it.
            // Set the number to loop as the smaller value between
            // the number of items in the collection and the page size.
            int displayCount = results.Items.Count > pageSize ? pageSize : results.Items.Count;
            for (int i = 0; i < displayCount; i++)
            {
                Item item = results.Items[i];
                Console.WriteLine("Subject: {0}", item.Subject);
                Console.WriteLine("Id: {0}\n", item.Id.ToString());
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception while paging results: {0}", ex.Message);
        }
    }
}

Beispiel: Durchführen einer Seiten weisen Suche mithilfe von EWSExample: Perform a paged search by using EWS

Paging wird von den folgenden EWS-Vorgängen unterstützt:Paging is supported by the following EWS operations:

Wenn Sie EWS verwenden, konfiguriert ihre Anwendung das Paging mit dem IndexedPageItemView -Element oder dem IndexedPageFolderView -Element und empfängt Informationen vom Server hinsichtlich der Paginierung vom RootFolder (FindItemResponseMessage)- Element oder dem RootFolder (FindFolderResponseMessage) -Element.If you're using EWS, your application configures paging with the IndexedPageItemView element or the IndexedPageFolderView element and receives information from the server regarding paging from the RootFolder (FindItemResponseMessage) element or the RootFolder (FindFolderResponseMessage) element.

In diesem Anforderungs Beispiel wird eine FindItem -Anforderung für maximal sechs Elemente gesendet, beginnend bei einem Offset von NULL vom Anfang der Liste der Elemente im Posteingang des Benutzers.In this request example, a FindItem request is sent for a maximum of six items, starting at an offset of zero from the beginning of the list of items in the user's Inbox.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
    xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types" 
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Eastern Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:FindItem Traversal="Shallow">
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Subject" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:IndexedPageItemView MaxEntriesReturned="6" Offset="0" BasePoint="Beginning" />
      <m:ParentFolderIds>
        <t:DistinguishedFolderId Id="inbox" />
      </m:ParentFolderIds>
    </m:FindItem>
  </soap:Body>
</soap:Envelope>

Der Server gibt die folgende Antwort zurück, die sechs Elemente enthält.The server returns the following response, which contains six items. Die Antwort weist außerdem darauf hin, dass es insgesamt acht Elemente in den Ergebnissen auf dem Server gibt und dass das letzte Element in der Ergebnisliste in dieser Antwort nicht vorhanden ist.The response also indicates that there are a total of eight items in the results on the server, and that the last item in the results list is not present in this response.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="775" MinorBuildNumber="35" Version="V2_4" 
        xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns="https://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:FindItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
        xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:FindItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootFolder IndexedPagingOffset="6" TotalItemsInView="8" IncludesLastItemInRange="false">
            <t:Items>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Query</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Update</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Planning resources</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Timeline</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>For your perusal</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>meeting notes</t:Subject>
              </t:Message>
            </t:Items>
          </m:RootFolder>
        </m:FindItemResponseMessage>
      </m:ResponseMessages>
    </m:FindItemResponse>
  </s:Body>
</s:Envelope>

In diesem Beispiel wird dieselbe Anforderung gesendet, dieses Mal wird jedoch das Offset -Attribut in fünf geändert, was darauf hinweist, dass der Server höchstens sechs Elemente zurückgeben soll, beginnend mit Offset 5 vom Anfang an.In this example, the same request is sent, but this time, the Offset attribute is changed to five, which indicates that the server should return at most six items starting at offset five from the beginning.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
    xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types" 
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Eastern Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:FindItem Traversal="Shallow">
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Subject" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:IndexedPageItemView MaxEntriesReturned="6" Offset="5" BasePoint="Beginning" />
      <m:ParentFolderIds>
        <t:DistinguishedFolderId Id="inbox" />
      </m:ParentFolderIds>
    </m:FindItem>
  </soap:Body>
</soap:Envelope>

Der Server sendet die folgende Antwort, die drei Elemente enthält.The server sends the following response, which contains three items. Die Antwort weist außerdem darauf hin, dass die Gesamtzahl der Elemente in den Ergebnissen auf dem Server immer noch acht ist und dass das letzte Element in der Ergebnisliste in dieser Antwort enthalten ist.The response also indicates that the total number of items in the results on the server is still eight, and that the last item in the results list is included in this response.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="775" MinorBuildNumber="35" Version="V2_4" 
        xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns="https://schemas.microsoft.com/exchange/services/2006/types" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:FindItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
    xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:FindItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootFolder IndexedPagingOffset="8" TotalItemsInView="8" IncludesLastItemInRange="true">
            <t:Items>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>meeting notes</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>Meeting notes</t:Subject>
              </t:Message>
              <t:Message>
                <t:ItemId Id="AAMkAGM2..." ChangeKey="CQAAABYA..." />
                <t:Subject>This cat is hilarious!</t:Subject>
              </t:Message>
            </t:Items>
          </m:RootFolder>
        </m:FindItemResponseMessage>
      </m:ResponseMessages>
    </m:FindItemResponse>
  </s:Body>
</s:Envelope>

Siehe auchSee also