我们有一个与列表相关联的远程事件接收器,并挂接到了那里的所有事件上。使用OOB SharePoint页面更新任何列表项时,将执行事件接收器;负责后续操作的Web服务效果很好。但是,当您更新商品时,请使用CSOM代码,例如在简单的控制台应用程序中,什么也不会发生。根本不调用事件接收器。我在SP 2013和2016上都发现了这个问题。
无关紧要的是,我不会发布任何代码:使用标准方法更新项目,并且列表项中的值实际上已更改,仅不触发事件接收器。简而言之: 项目从站点手动更新->触发了事件接收器 通过CSOM更新的项目->未触发事件接收器。
我记得使用服务器端代码和系统帐户时在SharePoint 2010上存在类似问题。难道CSOM调用的幕后Web服务(例如list.asmx)也在使用系统帐户进行更改?只是假设而已...
答案 0 :(得分:0)
因此,经过更深入的研究和许多尝试/失败之后,我们发现事件接收器中的代码确实存在问题。由于某些奇怪的原因,原始开发人员会在after属性中检查Title字段,并取消不存在的代码。我想这可能是为了防止循环通话。
汲取的教训:使用CSOM后,事件属性仅包含那些由CSOM代码更改的字段。请记住,以防您需要使用其他值而不是要更新的值。正因为如此,您可能需要愚蠢地复制并重新分配它们。