Политика управления информацией в SharePoint - PullRequest
1 голос
/ 05 сентября 2008

Непонятная головоломка, но она сводит меня с ума:

Я создаю собственную политику управления информацией в MOSS. Я реализовал IPolicyFeature, и моя функция политики успешно регистрируется путем настройки нового SPItemEventReceiver. Все новые элементы в моей библиотеке запускают события, как они должны, и все это прекрасно работает.

IPolicyFeature также имеет метод ProcessListItem, который должен задним числом применять политику к элементам, которые уже были в библиотеке (по крайней мере, он должен делать это до тех пор, пока он продолжает возвращать true). За исключением того, что это не так. Он применяет политику только к элементу first в библиотеке, и я абсолютно не понимаю, почему.

Кажется, это не исключение, и оно действительно возвращает true при обработке этого первого элемента, и я не могу думать, на что еще обратить внимание. Кто-нибудь?

Редактировать: ответ Кори, приведенный ниже, поставил меня на правильный путь. Что-то еще действительно терпело неудачу - я не выяснил, что, так как мой windbg-fu не тот, каким он должен быть, но я подозреваю, что это было что-то вроде «изменения коллекции, пока она повторяется». Мой код модифицировал SPListItem, который передается в ProcessListItem, а затем вызывал SystemUpdate для него; как только я изменил код так, чтобы он создал свою собственную переменную (указывающую на точно такой же SPListItem) и использовал ее, проблема исчезла ...

Ответы [ 2 ]

1 голос
/ 06 сентября 2008

Есть только пара вещей, о которых я могу подумать. Во-первых, вы разрабатываете на коробке, где вы могли бы использовать Visual Studio для отладки? Так что просто пройдя через это.

Если предположить, что это не так - я бы запустил WinDBG и подключил его к процессу непосредственно перед тем, как зарегистрировать политику. Включите исключения первого шанса, чтобы они ломались всякий раз, когда они возникают. Вы можете сделать это, введя команду "sxe clr", когда она будет взломана. Вот еще немного информации о WinDBG:

http://blogs.msdn.com/tess/archive/2008/06/05/setting-net-breakpoints-in-windbg-for-applications-that-crash-on-startup.aspx

Что я должен сделать, так это посмотреть, какие исключения First Chance будут выброшены, и создать! PrintException, чтобы увидеть, что происходит. Я предполагаю, что есть исключение, которое приводит к тому, что приложение перестает обрабатывать другие элементы.

Как выглядит логика для вашего ProcessListItem? Вы пытались просто сделать true, чтобы убедиться, что это работает?

0 голосов
/ 06 сентября 2008

Несколько хороших идей, спасибо. Отладчик Visual Studio не показывал исключение (и я на всякий случай обернул все в блоки try / catch), но я не думал о попытке Windbg ...

...