我有一个应用程序,它使用ContentService.Saved & ContentService.Saving的组合来扩展Umbraco来管理内容。
我有两个网站在一个Umbraco安装,我使用这些方法,以保持最新的内容,在不同的部分树。
到目前为止,我已经按照我想要的方式工作了。
现在,我想添加一个特性:取决于哪个Umbraco用户登录,要么发布内容,要么简单地将其发送审批。
因此,我更改了以下代码行:
cs.SaveAndPublishWithStatus(savedNode, 0, false)
对此:
cs.SendToPublication(savedNode);
现在我发现的问题是,与SaveAndPublishWithStatus()方法不同,cs.SendToPublication();没有传递false的选项,因此不会引发保存事件。所以我进入了一个无限的循环。
当我附加调试器并在第一次调用cs.SendToPublication(savedNode);时手动停止无限循环时,我就得到了我想要的行为。
有什么办法可以解决这个问题吗?有什么不同的方法我应该使用吗?
发布于 2017-02-05 09:46:05
您正确地说,在将项目发送到出版物时,目前不可能将raiseEvents
设置为false --这是一个问题。我在7.6节(http://issues.umbraco.org/issue/U4-9490)中增加了这个过载。
但是,考虑到您现在需要这样做,临时解决方案可能是确保您的代码在由.Saved
/ .Saving
事件触发时只运行一次。
这样做的一种方法是检查代码中的最后一个保存日期(UpdateDate
)。如果内容是在当前保存操作的最后一秒钟内保存的,则您知道这是由SendToPublication操作中发生的保存触发的保存事件。然后,您还知道该项目已经被发送到发布,并且不需要再次这样做-从而防止无休止的循环发生。
https://stackoverflow.com/questions/41980357
复制相似问题