Метод 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
)
Параметры
changeToken
Тип: Microsoft.SharePoint.SPChangeTokenРасположение в журнал изменений, начиная возврат изменений.
Возвращаемое значение
Тип: 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
См. также
Справочные материалы
Пространство имен Microsoft.SharePoint