SPSite.GetChanges 方法 (SPChangeToken, SPChangeToken)

Returns a collection of changes that have been logged over a specified period of time.

命名空间:  Microsoft.SharePoint
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
Public Function GetChanges ( _
    changeToken As SPChangeToken, _
    changeTokenEnd As SPChangeToken _
) As SPChangeCollection
用法
Dim instance As SPSite
Dim changeToken As SPChangeToken
Dim changeTokenEnd As SPChangeToken
Dim returnValue As SPChangeCollection

returnValue = instance.GetChanges(changeToken, _
    changeTokenEnd)
public SPChangeCollection GetChanges(
    SPChangeToken changeToken,
    SPChangeToken changeTokenEnd
)

参数

返回值

类型:Microsoft.SharePoint.SPChangeCollection
A collection of SPChange objects that represent the changes.

备注

When you construct the SPChangeToken objects to use with this method, pass SPChangeCollection.CollectionScope.Site as the constructor’s first argument, the value of the current object’s SPSite.ID property as the second argument, and a DateTime object as the third argument.

In addition, the following rules apply.

  • If either token refers to a time before the start of the current change log, the method throws an SPException exception.

  • If the time of the second token is earlier than the time of the first token, the method returns an empty collection.

  • If the first token is 空引用(无 在 Visual Basic 中), the change collection that is returned starts at the beginning of the current change log.

  • If the second token is 空引用(无 在 Visual Basic 中), the change collection that is returned includes all changes after the date specified by the first change token, up to the limit for a single collection. If more changes occurred in this period, the first batch is returned.

备注

By default, the change log retains data for 60 days. You can configure the retention period by setting the ChangeLogRetentionPeriod property.

示例

The following example is a console application that queries the change log for changes that took place during a period of seven days. The application then prints information about each change to the console.

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)
            {
               SPChangeToken startToken = new SPChangeToken(
                  SPChangeCollection.CollectionScope.Site, 
                  siteCollection.ID,
                  new DateTime(2008, 11, 17));

               SPChangeToken endToken = new SPChangeToken(
                  SPChangeCollection.CollectionScope.Site, 
                  siteCollection.ID,
                  new DateTime(2008, 11, 23));

               long total = 0;
               SPChangeCollection changes = siteCollection.GetChanges(startToken, endToken);
               while (changes.Count > 0)
               {
                  total += changes.Count;

                  foreach (SPChange change in changes)
                  {
                     Console.WriteLine("\nDate: {0}", change.Time.ToShortDateString());
                     Console.WriteLine("Object type: {0}", change.GetType().ToString());
                     Console.WriteLine("Change type: {0}", change.ChangeType);
                  }

                  startToken = changes.LastChangeToken;
                  changes = siteCollection.GetChanges(startToken, endToken);
               }

               Console.WriteLine("\nTotal changes = {0:#,#}", 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 startToken As New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
                                                siteCollection.ID, _
                                                New DateTime(2008, 11, 17))

            Dim endToken As New SPChangeToken(SPChangeCollection.CollectionScope.Site, _
                                              siteCollection.ID, _
                                              New DateTime(2008, 11, 23))

            Dim total As Long = 0
            Dim changes As SPChangeCollection = siteCollection.GetChanges(startToken, endToken)
            While changes.Count > 0
               total += changes.Count

               For Each change As SPChange In changes

                  Console.WriteLine(vbCrLf + "Date: {0}", change.Time.ToShortDateString())
                  Console.WriteLine("Object type: {0}", change.GetType().ToString())
                  Console.WriteLine("Change type: {0}", change.ChangeType)

               Next change

               startToken = changes.LastChangeToken
               changes = siteCollection.GetChanges(startToken, endToken)
            End While

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

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

另请参阅

引用

SPSite 类

SPSite 成员

GetChanges 重载

Microsoft.SharePoint 命名空间

SPChangeToken

其他资源

Using the Change Log