Сбой метода SPListItem.CopyTo при копировании на некоторые подсайты, но не на другие - PullRequest
1 голос
/ 15 ноября 2010

Разработан пользовательский рабочий процесс, который копирует страницы с сайта верхнего уровня на дочерние сайты.Страницы копируются в определенную папку в библиотеке страниц на узлах.

Этот рабочий процесс был установлен в 3 семействах сайтов, и в 2 из них он работает без проблем.В третьем семействе сайтов мы достигаем смешанных результатов, когда страницы успешно копируются на некоторые дочерние сайты, но не на другие.

Исключение возникает на несколько уровней в глубине вызова метода SPListItem.CopyTo.Стек вызовов выглядит следующим образом:

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.     
at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()     
at Microsoft.SharePoint.SPCopy.CopyIntoItem(String srcUrl, SPListItem target, Hashtable props, Byte[] stream, Boolean saveStream)     
at Microsoft.SharePoint.SPCopy.CopyIntoNewItem(Hashtable props, Byte[] stream, SPFolder targetFolder, String targetUrl, String srcUrl)     
at Microsoft.SharePoint.SPCopy.CopyIntoNewItem(SPListItem src, SPFolder targetFolder, String targetUrl)     
at Microsoft.SharePoint.SPCopy.CopyIntoItem(SPListItem src, String targetUrl)

Код рабочего процесса гарантирует, что связанный тип содержимого исходной страницы присоединен к целевой библиотеке страниц перед выполнением операции копирования.При использовании Reflector оказывается, что многие объекты ArrayList используются для копирования свойств исходной страницы;отсюда проблема.

Библиотека страниц в проблемных дочерних сайтах не отличается по своей конфигурации от тех, в которые страницы успешно копируются.

Папка, в которую она пытается скопировать, создаетсярабочий процесс как подпапка корневой папки целевой библиотеки страниц.Он использует тип содержимого папки по умолчанию.

В предыдущей версии рабочего процесса код копировал страницы в корневую папку библиотеки страниц и не сталкивался с этой проблемой.В этой версии мы используем папки для применения уникальных настроек безопасности к страницам в этой папке.

Функции публикации были активированы по всему семейству сайтов, и мы используем платформу MOSS 2007.

ЛюбаяМысль об этом будет принята с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 ноября 2010

Моим первым инстинктом будет проверка разрешений, проверка того, что у любого из не работающих сайтов есть те же разрешения, что и у работающих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...