Sharepoint 如何在没有WssId的情况下处理未使用的托管元数据项?

Sharepoint 如何在没有WssId的情况下处理未使用的托管元数据项?,sharepoint,sharepoint-2010,metadata,taxonomy,Sharepoint,Sharepoint 2010,Metadata,Taxonomy,问题 我们使用FrontPage RPC(put documents call)将(大量)文件上载到SharePoint。据我们所知,通过该协议设置分类字段的值需要它们的WssId 问题在于,除非在listitem上明确使用过术语,否则它们似乎没有WSS ID。这会导致上载以前未使用元数据术语的文档失败 代码 下面代码片段中的调用根本不返回这些术语的ID SPSite site = new SPSite( "http://some.site.com/foo/bar" ); SPWeb web =

问题

我们使用FrontPage RPC(put documents call)将(大量)文件上载到SharePoint。据我们所知,通过该协议设置分类字段的值需要它们的WssId

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

代码

下面代码片段中的调用根本不返回这些术语的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 );
}
我们还尝试直接查询分类隐藏列表,结果类似

呼救声

如能确认并提供建议,我们将不胜感激。我认为有三种可能的解决方案:
  • 通过以不同的方式上载术语,或者切换到不同的协议,更改我们上载术语的方式。
  • 以不同的方式查询元数据WSSID。适用于未使用条款的人。
  • 编写/查找用于预解析所有术语的WSSID的工具。关于如何优雅地做到这一点的建议是最受欢迎的。

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


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

拉德克