Элемент, обновленный через CSOM, не будет запускать удаленный приемник событий

У нас есть удаленный приемник событий, связанный со списком и подключенный ко всем событиям в нем. Когда вы обновляете любой элемент списка с помощью страницы OOB SharePoint, выполняется приемник событий; веб-служба, которая заботится о последующих действиях, работает хорошо. Однако при обновлении элемента используйте код CSOM, например. в простом консольном приложении ничего не происходит. Приемник событий вообще не вызывается. Я нашел эту проблему как на SP 2013, так и на 2016.

Я не буду публиковать какой-либо код, поскольку он не имеет значения: элемент обновляется стандартным способом, и значения фактически меняются в элементе списка, только приемник событий не срабатывает. Проще говоря: элемент обновляется вручную с сайта -> элемент, запущенный приемником событий, обновляется через CSOM -> приемник событий не активируется.

Я помню аналогичную проблему в SharePoint 2010 при использовании кода на стороне сервера и системной учетной записи. Может ли быть так, что за кулисами веб-служба, вызываемая CSOM (например, list.asmx), также использует системную учетную запись для внесения изменений? Это просто гипотеза...


person Diomos    schedule 17.07.2018    source источник


Ответы (1)


Итак, после более глубокого исследования и множества попыток/неудач мы обнаружили, что проблема действительно связана с кодом в нашем приемнике событий. По какой-то странной причине оригинальные разработчики проверяли поле Title после свойств и отменяли код, если он отсутствует. Я предполагаю, что это, вероятно, была попытка предотвратить зацикливание вызовов.

Один извлеченный урок: при использовании CSOM свойства после события содержат только те поля, которые были изменены кодом CSOM. Имейте это в виду на случай, если вам понадобится использовать значения, отличные от тех, которые вы хотите обновить. Вам может понадобиться тупо скопировать и присвоить их заново только из-за этого.

person Diomos    schedule 24.07.2018