在网上看到一篇文章说跟踪ItemUpdated,执行了10次,特验证一次,结果真的是执行10次。代码如下:

 1MOSS的ItemUpdated执行了10次,您碰到了吗?public class ListEventTest : SPItemEventReceiver
 2    }


我以为是不同代码调用造成的,就像SPSecurity.RunWithElevatedPrivileges,结果使用注释掉和没有注释掉的代码实验,结果是一样的。
更新一次item系统事件记录了10次。
更新前样子:

MOSS的ItemUpdated执行了10次,您碰到了吗?

更新后样子:

MOSS的ItemUpdated执行了10次,您碰到了吗?

恩,就是10次。。。不知道您是否在意过这个地方呢,呵呵。
我想,是不是SPListItem的Update方法重新引发了ItemUpdated事件导致了死循环,而MOSS又有某种机制,使得这种循环只发生10次就退出。
当然,这只是我的猜想,没有真凭实据,如果您知道,麻烦您告诉我,谢谢。

这个问题的解决方法也是很简单,就是使用DisableEventFiring和EnableEventFiring这两个方法,在那篇文章中有说明,下面的留言也有参考URL,代码就象下面这样:

1MOSS的ItemUpdated执行了10次,您碰到了吗?SPListItem item = properties.ListItem;
2MOSS的ItemUpdated执行了10次,您碰到了吗?item["Title"= "updated_" + item["Title"].ToString();
3MOSS的ItemUpdated执行了10次,您碰到了吗?this.DisableEventFiring();
4    item.Update();
5MOSS的ItemUpdated执行了10次,您碰到了吗?this.EnableEventFiring();

更改代码后,再试,正常。

相关文章在这里:
http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/sp-event-recievers-firing-10-times-on-purpose/

相关文章:

  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2021-10-13
  • 2021-08-18
  • 2021-08-26
  • 2022-01-17
猜你喜欢
  • 2021-06-20
  • 2021-12-26
  • 2021-07-08
  • 2021-12-21
  • 2021-10-09
  • 2022-12-23
相关资源
相似解决方案