サーバー間でコンテンツを展開する

最終更新日: 2010年1月21日

適用対象: SharePoint Server 2010

このコード サンプルは、オブジェクト モデルを使用して、サイト コレクション間でコンテンツを展開するパスおよびジョブを作成する方法を示しています。このコードは、展開元のサイト コレクションと展開先のサイト コレクションが同じサーバー ファーム内にあることを前提としています。ただし、異なるサーバー ファーム間のパスを構成することもできます。このコードが実行するタスクは、SharePoint サーバーの全体管理のユーザー インターフェイスを介して実行することもできます。

パスは、展開元のサイト コレクションと展開先のサイト コレクションを接続します。ジョブは、コピーされるコンテンツおよびコピーされるタイミングを制御します。Microsoft SharePoint Server 2010 は、展開元から展開先への展開のみをサポートし、複数の展開元から 1 つの展開先への展開や展開先から展開元へのコンテンツ展開はサポートしません。展開は、既定では増分的に行われ、サーバー管理者によって構成されます。

以下の例は、パスおよびジョブ設定を指定し、このファームのコンテンツ展開を構成し、展開パスおよび作成したパスに関連付けられたジョブを作成する方法を示しています。

using System;
using System.Collections.Generic;
using System.Text;

using Microsoft.SharePoint.Publishing.Administration;

namespace DeploymentAPISample
{
    // In this sample, we assume the following:
    //   Content is being deployed from a source site collection to 
    //   a destination site collection within the same farm.
    //   The SharePoint Central Admininstration Web application is
    //   accessible through port 8080.
    //   The source site collection is the root site collection on
    //   port 80.
    //   The destination site collection is on a managed path on 
    //   port 81.
    
    class Program
    {
        static void Main( string[] args )
        {
            DeploymentExample example = new DeploymentExample();
            example.Invoke();
        }
    }

    class DeploymentExample
    {
        public void Invoke()
        {

            // Path settings
            string pathName = "My Deployment Path";
            Uri sourceServerUri = new Uri( "https://server" );
            string sourceSiteCollection = "/";
            Uri destinationAdminUri = new Uri( "https://server:8080" );
            Uri destinationServerUri = new Uri( "https://server:81" );
            string destinationSiteCollection = "/sites/deploymentdestination";

            // Job settings
            string jobName = "My Deployment Job";

            ContentDeploymentPath path = null;
            ContentDeploymentJob job = null;

            try
            {
                // Configure Content Deployment for this farm.
                // Note: If you are deploying between farms, 
                // the DESTINATION farm must be configured 
                // to accept incoming deployment jobs.
                ContentDeploymentConfiguration config = ContentDeploymentConfiguration.GetInstance();
                config.AcceptIncomingJobs = true;
                config.RequiresSecureConnection = false; // NOTE: This is the simplest configuration, but is not the recommended secure setting
                config.Update();

                // Create a deployment path.
                ContentDeploymentPathCollection allPaths = ContentDeploymentPath.GetAllPaths();
                path = allPaths.Add();

                path.Name = pathName;
                path.SourceServerUri = sourceServerUri;
                path.SourceSiteCollection = sourceSiteCollection;
                path.DestinationAdminServerUri = destinationAdminUri;
                path.DestinationServerUri = destinationServerUri;
                path.DestinationSiteCollection = destinationSiteCollection;
                path.Update();

                // Create a job associated with the path you created.
                job = ContentDeploymentJob.GetAllJobs().Add();
                job.JobType = ContentDeploymentJobType.ServerToServer;
                job.Name = jobName;
                job.Path = path;
                job.Update();
                job.Run();
            }
            catch ( Exception ex )
            {
                Console.Error.WriteLine( ex.StackTrace );
                throw;
            }
            finally
            {
                // Delete the job that was created.
                if ( job != null )
                {
                    job.Delete();
                }
                // Delete the path that was created.
                if ( path != null )
                {
                    path.Delete();
                }
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text

Imports Microsoft.SharePoint.Publishing.Administration

Namespace DeploymentAPISample
    ' In this sample, we assume the following:
    '   Content is being deployed from a source site collection to 
    '   a destination site collection within the same farm.
    '   The SharePoint Central Admininstration Web application is
    '   accessible through port 8080.
    '   The source site collection is the root site collection on
    '   port 80.
    '   The destination site collection is on a managed path on 
    '   port 81.

    Friend Class Program
        Shared Sub Main(ByVal args() As String)
            Dim example As New DeploymentExample()
            example.Invoke()
        End Sub
    End Class

    Friend Class DeploymentExample
        Public Sub Invoke()

            ' Path settings
            Dim pathName As String = "My Deployment Path"
            Dim sourceServerUri As New Uri("https://server")
            Dim sourceSiteCollection As String = "/"
            Dim destinationAdminUri As New Uri("https://server:8080")
            Dim destinationServerUri As New Uri("https://server:81")
            Dim destinationSiteCollection As String = "/sites/deploymentdestination"

            ' Job settings
            Dim jobName As String = "My Deployment Job"

            Dim path As ContentDeploymentPath = Nothing
            Dim job As ContentDeploymentJob = Nothing

            Try
                ' Configure Content Deployment for this farm.
                ' Note: If you are deploying between farms, 
                ' the DESTINATION farm must be configured 
                ' to accept incoming deployment jobs.
                Dim config As ContentDeploymentConfiguration = ContentDeploymentConfiguration.GetInstance()
                config.AcceptIncomingJobs = True
                config.RequiresSecureConnection = False ' NOTE: This is the simplest configuration, but is not the recommended secure setting
                config.Update()

                ' Create a deployment path.
                Dim allPaths As ContentDeploymentPathCollection = ContentDeploymentPath.GetAllPaths()
                path = allPaths.Add()

                path.Name = pathName
                path.SourceServerUri = sourceServerUri
                path.SourceSiteCollection = sourceSiteCollection
                path.DestinationAdminServerUri = destinationAdminUri
                path.DestinationServerUri = destinationServerUri
                path.DestinationSiteCollection = destinationSiteCollection
                path.Update()

                ' Create a job associated with the path you created.
                job = ContentDeploymentJob.GetAllJobs().Add()
                job.JobType = ContentDeploymentJobType.ServerToServer
                job.Name = jobName
                job.Path = path
                job.Update()
                job.Run()
            Catch ex As Exception
                Console.Error.WriteLine(ex.StackTrace)
                Throw
            Finally
                ' Delete the job that was created.
                If job IsNot Nothing Then
                    job.Delete()
                End If
                ' Delete the path that was created.
                If path IsNot Nothing Then
                    path.Delete()
                End If
            End Try
        End Sub
    End Class
End Namespace

関連項目

タスク

[方法] 切断されたシナリオで展開をカスタマイズする

概念

サーバー間のコンテンツを展開する