Вы не должны вызывать обновление системы внутри вашего синхронного события. Событие без добавления дополнительной версии.
Если вы хотите обновить свойство до обновления, вы можете изменить afterProperties [""], и оно будет сохранено в случае успешного обновления.
base.ItemUpdating(properties);
properties.AfterProperties["Is Published"] = true;
Кстати, вы также можете получить состояние публикации, используя
ListItem.ModerationInformation.Status == SPModerationStatusType.Approved
(= опубликовано и утверждено)
Опора на внутреннее поле ootb гарантирует, что вам не придется связываться с дополнительными получателями событий (обратите внимание на такие забавные вещи, как при развертывании контента ...), и гарантирует, что статус всегда будет уточненный.
Надеюсь, это помогло.