2010-05-04 37 views
0

这里是我的当前设置:SharePoint 2007对象模型:如何创建新的网站集,将原始主网站移动为新网站集的子网站?

  • 一个站点集合在SharePoint 2007(MOSS企业)箱(32 GB的总规模)
  • 一个主站点有许多子网站(主要是从团队网站模板创建的,如果该事项),这是一个网站集合的一部分包装盒上的

我试图做*:

**如果有更好的顺序,或方法下面,我可以改变它*

  1. 创建一个新的网站集,与主默认站点,在同一个SP实例(这样做,容易SP对象模型做)
  2. 移动rootweb(一)在新的子网站位置,主网站下

当前结构:

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

看起来应该像什么新的结构:

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

这里是我的步骤#代码2:

注: * SPImport在SharePoint.Administration下的对象模型中,这里正在使用 *此代码目前与“未将对象引用实例出现了错误对象”,当它触发错误事件处理程序

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); 
} 

回答

0

而不是试图对此进行编码,您是否尝试过使用Codeplex的SharePoint Content Deployment Wizard
导出您当前的层次结构,并使用此工具将其导入到新位置。

Regards, M

+0

谢谢您的回答。我知道这个工具,我可能不得不试一试,如果以编程方式执行它将无法工作。 谢谢! – program247365 2010-05-04 14:06:48

+0

似乎出口与我的网站在开发达到一定的点,然后永远不会继续,并且永远不会出错。我让它运行了大约3个小时,并且在日志中没有其他时间戳/条目。它只运行了大约15分钟并停止了记录/工作。啊。 – program247365 2010-05-04 19:19:53

相关问题