如何将SharePoint 2010 DocumentSet从一个列表移动到另一个列表?

时间:2010-07-27 13:31:39

标签: api sharepoint-2010

我尝试了很多变化。

  1. 发送到图书馆 - 在Drop Off Library中创建一个Zipped文件,然后它不会通过Content Organizer中的规则进行路由
  2. API - 我尝试过导入,导入,但始终收到相同的错误。这是根据此MSDN文档:http://msdn.microsoft.com/en-us/library/microsoft.office.documentmanagement.documentsets.documentset.create.aspx
  3. 示例代码段:

    byte [] exportedFile = set.Export();

    DocumentSet.Import(exportedFile,DocSetNameToCreate,targetFolder,dsCt.Id,properties,web.CurrentUser);

    收到错误:

    DocID:未设置网站前缀

2 个答案:

答案 0 :(得分:1)

终于让它运行了。这与文档ID功能有关。确保在每个站点中激活它。让我们过夜(计时器工作需要运行)。然后,内容管理器将成功移动和解压缩您的文档集。

答案 1 :(得分:1)

您不必激活文档ID功能,只需确保在目标网站集的根网站的属性包中(将再次导入文档集)存在名为“docid_msft_hier_siteprefix”的属性,其中包含值“”(空字符串)。

使用此powershell-script:

$site = Get-SPSite http://host/sites/yoursite
$properties = $site.RootWeb.Properties

if ($properties["docid_msft_hier_siteprefix"] -eq $null)
{
    $properties["docid_msft_hier_siteprefix"] = ""
    $properties.Update()
}

请注意,我使用旧的属性包RootWeb.Properties而不是新的哈希表RootWeb.AllProperties,这是因为Microsoft.Office.DocumentManagement.Internal.OobProvider类仍然使用它。

那么为什么导入文档集时失败呢?函数DocumentSet.ImportProperties()在尝试设置文档集列表项的文档ID时捕获ArgumentException(因此,如果文档id列尚不存在则没有问题。)

但他们错过了通过函数OobProvider.GenerateDocumentId()调用的函数OobProvider.GetSitePrefix()如果属性包不包含prefix属性则抛出InvalidOperationException。