问题
我们使用 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。非常欢迎就如何优雅地做到这一点提出建议。