サーバー間でコンテンツを展開する
最終更新日: 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