我正在使用EpiServer 8,并且需要在保存计划发布时执行自定义API调用。目前,我能够通过初始化模块捕捉即时发布事件,就像这样:当一个编辑器立即发布内容在EpiServer 8中,如何扩展Scheduled Publish事件?
以上EventsPublishingContent[InitializableModule]
[ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
public class ContentEventInitializer : IInitializableModule
{
public void Initialize(InitializationEngine initializationEngine)
{
var events = ServiceLocator.Current.GetInstance<IContentEvents>();
events.PublishingContent += EventsPublishingContent;
}
public void Preload(string[] parameters)
{
}
public void Uninitialize(InitializationEngine initializationEngine)
{
var events = ServiceLocator.Current.GetInstance<IContentEvents>();
events.PublishingContent -= EventsPublishingContent;
}
private void EventsPublishingContent(object sender, ContentEventArgs contentEventArgs)
{
// Tell our API that maintenance started.
}
}
事件的作品。该方法上的Visual Studio断点成功命中。但是,当网站编辑选择“发布时间表”时,它不会执行。
当一个编辑器查看“时间表发布”对话框中,选择“日程安排”按钮,我想捕捉以下,并将其发送给我们的API:
- “发布变化对“价值。
- 将要发布的页面。
这样做的正确方法是什么?谢谢。
计划发布之间的时间窗口有多长?您确定在编辑器操作和实际预定作业执行之间没有应用程序池回收吗?查看该作业的代码 - 它将内容存储库上的Publish()动作称为应该触发发布/发布的事件。 –
谢谢Valdis。目前这个项目还在开发中,我是编辑进行编程和测试。基本上我想拦截“Schedule for Publish”事件,这样我就可以发布发布时间戳和发布到单独API的页面。 –
听起来像你可能会连接* ContentSaved *事件并查看内容的* StartPublish *属性? –