问题
我们使用FrontPage RPC(放置文档调用)将(大量)文件上载到SharePoint。据我们所知,通过此协议设置分类法字段的值需要 WssId 。
问题在于,除非在listitem之前明确使用过术语,否则他们似乎拥有 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 );
}
我们还尝试直接查询分类隐藏列表,结果相似。
寻求帮助
如何解决这个问题的确认和建议将不胜感激。我看到了解决方案的三种可能途径:
答案 0 :(得分:1)
将WssID值设置为-1可以帮助您。我有两个不同的Web应用程序之间的类似问题(复制包含元数据字段的文档)。我花了很多时间来解决奇怪的元数据问题。最后,将值设置为-1已解决了我的所有问题。即使GetWssIdsOfTerm返回一个值,我也使用-1并且它可以正常工作。 可能有一些背景逻辑可以照顾WssId。
拉狄克