Проблема
Мы загружаем (большое количество) файлов в SharePoint с помощью FrontPage RPC ( положить документы вызов). Насколько нам удалось выяснить, для установки значений полей таксономии с помощью этого протокола требуется их WssId .
Проблема в том, что, если термины ранее не были явно использованы в элементе списка, они, похоже, не имеют идентификатор WSS. Это приводит к сбою загрузки документов с ранее не использованными терминами метаданных.
Код
Вызов TaxonomyField.GetWssIdsOfTerm в приведенном ниже фрагменте кода просто не возвращает идентификатор для этих терминов.
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 для всех терминов. Предложения о том, как сделать это элегантно, приветствуются.