2008-09-05 64 views
1

一個難解之謎,但它推動着我絕對堅果:SharePoint中的信息管理策略

我在MOSS中創建自定義信息管理策略。我已經實現了IPolicyFeature,並且我的策略功能通過配置一個新的SPItemEventReceiver來愉快地註冊自己。我的圖書館中的所有新項目都會按照他們的要求進行激發,並且一切正常。

IPolicyFeature還有一個ProcessListItem方法,它應該追溯地將策略應用到已經在庫中的項目(至少,只要它一直返回true就應該這樣做)。除了沒有。它只適用於圖書館中的第一個項目,我完全不知道爲什麼。

它似乎沒有拋出異常,它真的從處理第一個項目返回true,我想不出還有什麼要看。任何人?

編輯:科裏的答案,下面,讓我在正確的軌道上。其他的東西確實是失敗的 - 我沒有發現什麼,因爲我的windbg-fu不是它應該的,但我懷疑它是「在迭代時修改集合」。我的代碼正在修改傳入ProcessListItem的SPListItem,然後在其上調用SystemUpdate;只要我改變了代碼,以便它創建了自己的變量(在完全相同的SPListItem指向),並使用的,問題走了......

回答

1

這裏只有一對夫婦的事情,我能想到的嘗試。首先,您是在可以使用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

我會做,然後看爲第一次偶然的例外是拋出,並做一個!PrintException看看發生了什麼。我的猜測是,有一個異常被拋出某個地方,導致應用程序停止處理其他項目。

是什麼邏輯看起來像你的ProcessListItem?你有沒有試過只是做一個真正的回報,以確保它的工作?

0

有一些不錯的想法,謝謝。 Visual Studio調試器沒有顯示異常(並且我已經將所有內容都包含在try/catch塊中以防萬一),但我沒有想過嘗試Windbg ...