1

问题

我们使用 FrontPage RPC(放置文档调用)将(大量)文件上传到 SharePoint 。据我们所知,通过此协议设置分类字段的值需要它们的WssId

问题是除非之前在列表项上明确使用过术语,否则它们似乎没有WSS ID。这会导致上传具有以前未使用的元数据术语的文档失败。

编码

下面代码片段中的TaxonomyField.GetWssIdsOfTerm调用根本不会返回这些术语的 ID。

SPSite site = new SPSite( "http://some.site.com/foo/bar" );
SPWeb web = site.OpenWeb();

TaxonomySession session = new TaxonomySession( site ); 
TermStore termStore = session.TermStores[new Guid( "3ead46e7-6bb2-4a54-8cf5-497fc7229697" )];
TermSet termSet = termStore.GetTermSet( new Guid( "f21ac592-5e51-49d0-88a8-50be7682de55" ) );
Guid termId = new Guid( "a40d53ed-a017-4fcd-a2f3-4c709272eee4" );

int[] wssIds = TaxonomyField.GetWssIdsOfTerm( site, termStore.Id, termSet.Id, termId, false, 1);

foreach( int wssId in wssIds )
{
    Console.WriteLine( wssId );
}

我们还尝试直接查询分类隐藏列表,结果相似。

呼救声

对于如何解决这个问题的确认和建议将不胜感激。我看到了三种可能的解决方案:

  • 改变我们上传的方式,要么以不同的方式上传条款,要么切换到不同的协议。
  • 以不同的方式查询元数据 WssIds。适用于未使用条款的一种。
  • 编写/查找一个工具来为所有术语预解析 WssIds。非常欢迎就如何优雅地做到这一点提出建议。

4

1 回答 1

1

将 WssID 值设置为 -1 应该会对您有所帮助。我在两个不同的 Web 应用程序之间遇到了类似的问题(复制包含元数据字段的文档)。我花了很多时间来解决奇怪的元数据问题。最后,将值设置为 -1 解决了我所有的问题。即使 GetWssIdsOfTerm 返回一个值,我也使用了 -1 并且它可以正常工作。可能有一些背景逻辑会处理 WssId。

拉德克

于 2010-11-25T10:52:20.793 回答