Поделиться через


Метод SPWeb.GetChanges (SPChangeToken)

Получает изменения, начиная с заданной точки в журнале изменений.

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

Синтаксис

'Декларация
Public Function GetChanges ( _
    changeToken As SPChangeToken _
) As SPChangeCollection
'Применение
Dim instance As SPWeb
Dim changeToken As SPChangeToken
Dim returnValue As SPChangeCollection

returnValue = instance.GetChanges(changeToken)
public SPChangeCollection GetChanges(
    SPChangeToken changeToken
)

Параметры

Возвращаемое значение

Тип: Microsoft.SharePoint.SPChangeCollection
Изменения, которые произошли на сайте с момента место в журнале изменений указанного changeToken.

Исключения

Исключение Условие
SPException

changeToken — null .

Замечания

Чтобы получить объект SPChangeToken , передаваемый данному методу как аргумент, извлеките из последнего изменения возвращаемых предыдущего вызова этого метода свойство ChangeToken . Или использовать конструктор SPChangeToken для создания нового маркера изменения.

Примечание

По умолчанию журнал изменений ведется в течение 60 дней. Чтобы изменить период хранения по умолчанию, задайте свойство ChangeLogRetentionPeriod .

Примеры

Следующий пример является консольным приложением, которое демонстрирует, как получить все изменения в журнал. Программа выполняет цикл при получении изменений в пакетах и прерывается вне цикла при извлечении коллекции с элементами 0, указывающий на то, что он достигнут конец журнала.

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)
            {
               SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;
               long total = 0;

               // Start with a null token so we take changes 
               // from the beginning of the log
               SPChangeToken token = null;

               // Get the first batch of changes
                SPChangeCollection changes = webSite.GetChanges(token);

               // Loop until we get zero changes
               while (changes.Count > 0)
               {
                  total += changes.Count;

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

                  // Go get another batch
                  token = changes.LastChangeToken;
                  changes = webSite.GetChanges(token);
               }
               Console.WriteLine("\nTotal = {0:#,#} changes", total);
            }
         }
         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

            Dim timeZone As SPTimeZone = webSite.RegionalSettings.TimeZone
            Dim total As Long = 0

            ' Start with a null token so we take changes 
            ' from the beginning of the log
            Dim token As SPChangeToken = Nothing

            ' Get the first batch of changes
            Dim changes As SPChangeCollection = webSite.GetChanges(token)

            ' Loop until we get zero changes
            While changes.Count > 0
               total += changes.Count

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

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

            Console.WriteLine(vbCrLf + "Total = {0:#,#} changes", total)

         End Using
      End Using

      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()

   End Sub
End Module

См. также

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

SPWeb класс

Элементы SPWeb

Перегрузка GetChanges

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

CurrentChangeToken

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

Using the Change Log