Kentico 利用页面级事件

Kentico Tapping into Page Level Events

我们正在 Kentico 以外的数据库中创建网络事件。然后将这些网络事件用于企业报告。我需要在 Kentico 项目中实现相同的功能。

  1. 是否有一个事件可以在页面加载后触发,以便我可以在登录后使用页面名称和用户信息创建我的 Web 事件。

  2. 我过去也看到过,对于事件,Request 和 Session 对象不可用。但是,HTTPContext.Current 可用。我需要 Request 和 Session 对象。

我们正在使用 Kentico 版本 7.0.92 并且有一个门户模板 站点。

现在,我不想使用门户模板页面来创建事件,因为此代码会针对每个页面请求执行多次。

基本上,我对 PageName、Session 和 Request 对象感兴趣。

我环顾四周 Kentico 7 documentation。看起来我们有 CMSRequestEvents,但未能找到示例代码。

更新: 看起来缺少的部分是 CMSContext class。现在只是试图为 CMSRequestEvents 找到正确的事件,其中我有可用的 Session 对象。

我建议按以下方式修改 Kentico\CMS\Global.asax.cs

public override void Init()
{
    base.Init();
    CMSRequestEvents.AcquireRequestState.After += AcquireRequestState_After;
}

void AcquireRequestState_After(object sender, EventArgs e)
{
    // Do your stuff...
}

到那个时候 HttpContext.Current.Session should already be initialized。可以从 HttpContext.Current.Request 中检索页面名称,该名称永远不应为空。