首页 > 解决方案 > 通过 CSOM 更新的项目不会触发远程事件接收器

问题描述

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

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

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

标签: sharepoint-2013csomsharepoint-2016

解决方案


因此,经过深入调查和多次尝试/失败后,我们发现事件接收器中的代码确实存在问题。由于某些奇怪的原因,原始开发人员正在检查属性后的标题字段,如果不存在则取消代码。我想这可能是为了防止循环调用。

吸取的一个教训:在事件属性后使用 CSOM 时,仅包含由 CSOM 代码更改的那些字段。请记住这一点,以防您需要使用其他值而不是要更新的值。正因为如此,您可能需要愚蠢地复制并再次分配它们。


推荐阅读