1

問題

FrontPage RPC ( put documents呼び出し)を使用して、(大量の) ファイルを 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 );
}

また、タクソノミ隠しリストを直接クエリしてみましたが、同様の結果が得られました。

助けを求める叫び

これに取り組む方法についての確認とアドバイスの両方をいただければ幸いです。ソリューションへの 3 つの可能なルートが表示されます。

  • 別の方法で用語をアップロードするか、別のプロトコルに切り替えることにより、アップロード方法を変更します。
  • 別の方法でメタデータ WssIds を照会します。未使用の用語で機能するもの。
  • すべての用語の WssId を事前解決するためのツールを作成/検索します。これをエレガントに行う方法についての提案は大歓迎です。

4

1 に答える 1

1

WssID 値を -1 に設定すると役立つはずです。2 つの異なる Web アプリケーション間で同様の問題 (メタデータ フィールドを含むドキュメントのコピー) が発生しました。私は奇妙なメタデータの問題を解決するために何時間も費やしました。結局、値を -1 に設定すると、すべての問題が解決しました。GetWssIdsOfTerm が値を返す場合でも、-1 を使用すると正しく動作します。おそらく、WssId を処理するバックグラウンド ロジックがいくつか存在します。

ラデク

于 2010-11-25T10:52:20.793 に答える