Объектная модель SharePoint 2007: как создать новое семейство сайтов, переместить исходный основной сайт в качестве дочернего сайта нового семейства сайтов? - PullRequest
0 голосов
/ 04 мая 2010

Вот мои текущие настройки:

  • одно семейство сайтов на коробке SharePoint 2007 (MOSS Enterprise) (всего 32 ГБ)
  • один основной сайт с множеством дочерних сайтов (в основном, созданный из шаблона сайта группы, если это имеет значение), который является частью одного семейства сайтов на коробке

Что я пытаюсь сделать *:

** Если есть лучший заказ или метод для следующего, я готов изменить его *

  1. Создание нового семейства сайтов с основным сайтом по умолчанию на том же экземпляре SP (это делается, это легко сделать в объектной модели SP)
  2. Переместите rootweb (a) в качестве дочернего сайта на новом месте под основным сайтом

Текущая структура:

rootweb (a)
          \
          many sub sites (sub a)

Как должна выглядеть новая структура:

newrootweb(b)
       \
        oldrootweb (a)
            \
             old many sub sites (sub a)

Вот мой код для шага № 2:

Примечания: * SPImport в объектной модели под SharePoint. Администрирование, это то, что используется здесь * Этот код в настоящее время выдает ошибку "Ссылка на объект, а не экземпляр объекта", когда он запускает обработчик события ошибки

using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Deployment;

public static bool FullImport(string baseFilename, bool CommandLineVerbose, bool bfileCompression, string fileLocation, bool HaltOnNonfatalError,
           bool HaltOnWarning, bool IgnoreWebParts, string LogFilePath, string destinationUrl)
        {
            #region my try at import

            string message = string.Empty;
            bool bSuccess = false;
            try
            {
                SPImportSettings settings = new SPImportSettings();
                settings.BaseFileName = baseFilename;
                settings.CommandLineVerbose = CommandLineVerbose;
                settings.FileCompression = bfileCompression;
                settings.FileLocation = fileLocation;
                settings.HaltOnNonfatalError = HaltOnNonfatalError;
                settings.HaltOnWarning = HaltOnWarning;
                settings.IgnoreWebParts = IgnoreWebParts;
                settings.IncludeSecurity = SPIncludeSecurity.All;
                settings.LogFilePath = fileLocation;
                settings.WebUrl = destinationUrl;
                settings.SuppressAfterEvents = true;
                settings.UpdateVersions = SPUpdateVersions.Append;
                settings.UserInfoDateTime = SPImportUserInfoDateTimeOption.ImportAll;

                SPImport import = new SPImport(settings);

                import.Started += delegate(System.Object o, SPDeploymentEventArgs e)
                {
                    //started
                    message = "Current Status: " + e.Status.ToString() + " " + e.ObjectsProcessed.ToString() + " of " + e.ObjectsTotal + " objects processed thus far.";
                    message = e.Status.ToString();
                };
                import.Completed += delegate(System.Object o, SPDeploymentEventArgs e)
                {
                    //done
                    message = "Current Status: " + e.Status.ToString() + " " + e.ObjectsProcessed.ToString() + " of " + e.ObjectsTotal + " objects processed.";
                };
                import.Error += delegate(System.Object o, SPDeploymentErrorEventArgs e)
                {
                    //broken
                    message = "Error Message: " + e.ErrorMessage.ToString() + " Error Type: " + e.ErrorType + " Error Recommendation: " + e.Recommendation
                        + " Deployment Object: " + e.DeploymentObject.ToString();
                    System.Console.WriteLine("Error");
                };
                import.ProgressUpdated += delegate(System.Object o, SPDeploymentEventArgs e)
                {
                    //something happened
                    message = "Current Status: " + e.Status.ToString() + " " + e.ObjectsProcessed.ToString() + " of " + e.ObjectsTotal + " objects processed thus far.";
                };

                import.Run();

                bSuccess = true;
            }
            catch (Exception ex)
            {
                bSuccess = false;
                message = string.Format("Error: The site collection '{0}' could not be imported. The message was '{1}'. And the stacktrace was '{2}'", destinationUrl, ex.Message, ex.StackTrace);
            }

            #endregion

            return bSuccess;
        }

Вот код, вызывающий вышеуказанный метод:

[TestMethod]
public void MOSS07_ObjectModel_ImportSiteCollection()
{
    bool bSuccess = ObjectModelManager.MOSS07.Deployment.SiteCollection.FullImport("SiteCollBAckup.cmp", true, true, @"C:\SPBACKUP\SPExports", false, false, false, @"C:\SPBACKUP\SPExports", "http://spinstancename/TestImport");
    Assert.IsTrue(bSuccess);
}

1 Ответ

0 голосов
/ 04 мая 2010

Вместо того чтобы пытаться закодировать это, вы пытались использовать Мастер развертывания контента SharePoint из Codeplex?
Экспортируйте текущую иерархию и импортируйте ее на новое место с помощью этого инструмента.

С уважением, M

...