代码之家  ›  专栏  ›  技术社区  ›  Paul-Jan

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

  •  1
  • Paul-Jan  · 技术社区  · 15 年前

    我们使用FrontPage RPC将(大量)文件上载到SharePoint( 放置文档 呼叫)。据我们所知,通过这个协议设置分类字段的值需要 .

    问题是,除非以前在列表项上显式地使用过术语,否则它们似乎不会 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 );
    }
    

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

    呼救声

    • 改变我们上传的方式,或者以不同的方式上传条款,或者切换到不同的协议。
    • 编写/找到一个工具来预解析所有术语的wssid。关于如何做到优雅的建议是非常受欢迎的。
    1 回复  |  直到 15 年前
        1
  •  1
  •   Radek Plach    15 年前

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