SPChangeToken-Klasse

Steht für den eindeutigen sequenziellen Ort einer Änderung innerhalb des Änderungsprotokolls.

Vererbungshierarchie

System.Object
  Microsoft.SharePoint.SPChangeToken

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public NotInheritable Class SPChangeToken
'Usage
Dim instance As SPChangeToken
[SerializableAttribute]
public sealed class SPChangeToken

Hinweise

Jeder Eintrag in das Änderungsprotokoll wird durch ein SPChange -Objekt dargestellt. Wenn eine Änderung protokolliert wird, ist es mit einem identifizierende-Token enthalten die durch ein SPChangeToken -Objekt der ChangeToken -Eigenschaft des Objekts SPChange dargestellt wird.

Sie können das Änderungstoken abrufen, das verwendet wird, um die nächste Änderung zu markieren, die für die Liste, Website, Websitesammlung oder Inhaltsdatenbank, die Sie für die Programmierung werden durch den Zugriff auf die CurrentChangeToken -Eigenschaft der Klasse SPList, SPWeb, SPSiteoder SPContentDatabase angemeldet ist.

Abfragebegriff häufiger auftritt, sollten Sie ein Änderungstoken zum Einschränken des Bereichs einer Abfrage für das Änderungsprotokoll verwenden. Beispielsweise können Sie die Änderungen, beginnend bei einem bestimmten Zeitpunkt im Änderungsprotokoll, indem Sie ein SPChangeToken -Objekt als Argument an die GetChanges -Methode der SPList, SPWeb, SPSiteoder SPContentDatabase -Klasse übergeben abrufen. Das Änderungstoken, das Sie übergeben stellt die sequenziellen Ort im Protokoll an Ihre Abfrage zu beginnen.

Sie können auch die GetChanges -Methode aufrufen mit zwei Änderungstoken als Argumente, die angibt, dass eine Anfangs- und End-für Ihre Abfrage zeigen. In ähnlicher Weise können Sie Anfangs- und Endpunkte angeben, durch eine andere Überladung GetChanges, dieser Befehl akzeptiert eine Instanz der SPChangeQuery -Klasse aufrufen. Diese Klasse enthält Eigenschaften, die Sie zum Optimieren von Abfragen, einschließlich zwei Eigenschaften, die SPChangeToken -Objekte enthalten, die ChangeTokenStart -Eigenschaft die ChangeTokenEnd -Eigenschaft und verwenden können.

Alle Überladungen der GetChanges -Methode wird ein SPChangeCollection -Objekt zurückgeben. Die Anzahl der Änderungen, die in einer einzelnen Auflistung zurückgegeben werden ist aus Gründen der Systemleistung begrenzt, daher Sie GetChanges in einer Schleife aufrufen sollten, bis Sie eine leere Auflistung erhalten, womit angezeigt wird, dass Sie das Ende des Protokolls erreicht haben oder es sind keine weitere Änderungen, die Ihre Abfrage erfüllen. Wenn Sie dies tun, verwenden Sie das Token, das von der LastChangeToken -Eigenschaft des ersten Blattes ein, den zweiten Batch, abrufen und so weiter, bis Sie einen Batch mit 0 (null) Änderungen gelangen zurückgegeben wird. Allgemeine Ansatz wird durch den folgenden Code dargestellt, die alle Änderungen, die für eine Websitesammlung protokolliert abruft.

// Get the first batch of changes.
SPChangeToken token = null;
SPChangeCollection changes = siteCollection.GetChanges(token);

while (changes.Count > 0)
{
   foreach (SPChange change in changes)
   {
      // Process each change.
   }

   // Go get another batch.
   token = changes.LastChangeToken;
   changes = siteCollection.GetChanges(token);
}
' Get the first batch of changes.
Dim token As SPChangeToken = Nothing
Dim changes As SPChangeCollection = siteCollection.GetChanges(token)

While changes.Count > 0
   Dim change As SPChange
   For Each change in changes
      ' Process the change.
   Next change

   ' Go get another batch.
   token = changes.LastChangeToken
   changes = siteCollection.GetChanges(token)
End While

Beispiele

Das folgende Beispiel ist eine Konsolenanwendung, die die SPChangeToken -Klasse verwendet, um Änderungen zurückzugeben, die auf einer Website, die während der letzten 60 Tage aufgetreten sind.

Hinweis

In der Standardeinstellung behält das Änderungsprotokoll Daten für 60 Tage. Sie können die Aufbewahrungsdauer konfigurieren, indem die ChangeLogRetentionPeriod -Eigenschaft festlegen.

using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.RootWeb)
            {
               // Display change times as local time.
               SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;

               // Create a change token.
               DateTime startTime = DateTime.UtcNow.AddDays(-60);
               SPChangeToken startToken = new SPChangeToken(SPChangeCollection.CollectionScope.Web,
                                                            webSite.ID,
                                                            startTime);

               // Retrieve the first batch of changes.
               SPChangeCollection changes = webSite.GetChanges(startToken);

               while (changes.Count > 0)
               {
                  foreach (SPChange change in changes)
                  {
                     // Process the change.
                     Console.WriteLine("\nDate: {0}", timeZone.UTCToLocalTime(change.Time).ToString());
                     Console.WriteLine("Change subclass: {0}", change.GetType().ToString());
                     Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
                  }

                  // Get another batch.
                  startToken = changes.LastChangeToken;
                  changes = webSite.GetChanges(startToken);
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}
Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.RootWeb

            ' Display change times as local time.
            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone

            ' Create a change token.
            Dim startTime As DateTime = DateTime.UtcNow.AddDays(-60)
            Dim startToken As SPChangeToken = New SPChangeToken(SPChangeCollection.CollectionScope.Web, _
                                                                webSite.ID, _
                                                                startTime)

            ' Retrieve the first batch of changes.
            Dim changes As SPChangeCollection = webSite.GetChanges(startToken)

            While changes.Count > 0
               Dim change As SPChange
               For Each change In changes
                  ' Process the change.
                  Console.WriteLine(vbCrLf + "Date: {0}", timeZone.UTCToLocalTime(change.Time).ToString())
                  Console.WriteLine("Change subclass: {0}", change.GetType().ToString())
                  Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
               Next

               ' Get another batch.
               startToken = changes.LastChangeToken
               changes = webSite.GetChanges(startToken)
            End While

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.

Siehe auch

Referenz

SPChangeToken-Member

Microsoft.SharePoint-Namespace

Weitere Ressourcen

Using the Change Log