2008-09-05 63 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 ...