Класс SPChangeToken

Возвращает коллекцию шаблонов сайтов, доступных для сайта.

Иерархия наследования

System.Object
  Microsoft.SharePoint.SPChangeToken

Пространство имен:  Microsoft.SharePoint
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
<SerializableAttribute> _
Public NotInheritable Class SPChangeToken
'Применение
Dim instance As SPChangeToken
[SerializableAttribute]
public sealed class SPChangeToken

Замечания

Каждая запись в журнале изменений представляется объектом SPChange . При записи в журнал изменений его придается идентифицирующее маркер, который представлен объект SPChangeToken свойство ChangeToken объекта SPChange .

Вы можете получить маркер изменений, который будет использоваться для пометки к следующему изменению, вход для списка, веб-узла, семейства веб-сайтов или базы данных содержимого, при программировании с помощью свойства CurrentChangeToken класса SPList, SPWeb, SPSiteили SPContentDatabase .

Как правило будет использоваться маркер изменений для ограничения области запроса журнала изменений. Например можно получить изменения, начиная с определенной точки в журнале изменений, передав объект SPChangeToken как аргумент методу GetChanges , SPList, SPWeb, SPSiteили SPContentDatabase класса. Маркер изменений, который передается представляет последовательный место в журнале запрос, чтобы начать.

Также можно вызвать метод GetChanges с двумя маркерами изменения как аргументы, указывающий начальный и конечный пункт для запроса. Аналогичным образом можно указать начальную и конечную точки, вызвав другую перегрузку GetChanges, это одна принимает экземпляр класса SPChangeQuery . Этот класс имеет свойства, которые можно использовать для уточнения запроса, включая два свойства, которые содержат объекты SPChangeToken , свойства ChangeTokenStart и ChangeTokenEnd .

Все перегрузки метода GetChanges возвращает объект SPChangeCollection . Число изменений, которые возвращаются в одну коллекцию ограничено для повышения производительности, поэтому следует вызвать GetChanges в цикле пока не будет получен пустой коллекции, указывающий на то, что отсутствуют дополнительные изменения, удовлетворяющих условиям или достигнут конец журнала. При этом используйте маркер, который возвращается свойством LastChangeToken для получения второго пакета и т. д, пока не получите пакет с нуля изменения первого пакета. Общий подход показан в следующем коде, который извлекает все изменения в журнал для семейства веб-сайтов.

// 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

Примеры

Следующий пример является консольным приложением, которое использует класс SPChangeToken , чтобы вернуть изменения, произошедшие за последние 60 дней на веб-узле.

Примечание

По умолчанию журнал изменений ведется в течение 60 дней. Срок хранения можно настроить с помощью свойства ChangeLogRetentionPeriod .

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

Потокобезопасность

Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPChangeToken

Пространство имен Microsoft.SharePoint

Другие ресурсы

Using the Change Log