通过CSOM更新的项目不会触发远程事件接收器



我们有一个与列表相关联的远程事件接收器,并挂接到那里的所有事件。当您使用OOB SharePoint页面更新任何列表项时,将执行事件接收器;负责后续操作的web服务运行良好。然而,当您使用CSOM代码更新项目时,例如在简单的控制台应用程序中,什么都不会发生。根本没有调用事件接收器。我在SP 2013和2016上都发现了这个问题。

当它不相关时,我不会发布任何代码:项使用标准方法更新,并且列表项中的值实际上发生了更改,只有事件接收器没有被触发。简单地说:从站点手动更新的项目->事件接收器已启动通过CSOM更新的项目->事件接收器未启动。

我记得在SharePoint 2010上使用服务器端代码和系统帐户时出现了类似的问题。CSOM调用的后台web服务(例如list.asmx(是否也在使用系统帐户进行更改?这只是假设。。。

因此,经过深入调查和多次尝试/失败,我们发现事件接收器中的代码确实存在问题。出于某种奇怪的原因,最初的开发人员在属性后面检查"标题"字段,并在不存在代码的情况下取消代码。我想这可能是为了防止循环调用。

经验教训:当使用CSOM时,事件后属性只包含那些被CSOM代码更改的字段。记住它,以防您需要使用除要更新的值之外的其他值。正因为如此,你可能需要愚蠢地复制并重新分配它们。

最新更新