Kentico点击Page not Found事件

时间:2015-03-24 21:30:55

标签: events kentico

我的任务是从Kentico项目中记录我们数据库中找不到的异常和页面。对于未找到的页面,我需要点击" CMSRequestEvents.End.After"事件。此事件接收发件人和事件参数。我如何破解事件args并找到未找到相关内容的页面?由于此事件被所有请求触发,我只需处理"页面未找到"并记录下来。发生异常时会触发SystemEvents.Exception.Execute,并且找不到页面也不例外。我们使用的是Kentico版本7.

[CustomHandleError]
public partial class CMSModuleLoader
{
    private class CustomHandleErrorAttribute : CMSLoaderAttribute
    {
        /// <summary>
        /// Called automatically when the application starts
        /// </summary>
        public override void Init()
        {
            // Assign custom handlers to the appropriate events
            SystemEvents.Exception.Execute += System_Exception_Execute;
            CMSRequestEvents.End.After += Request_End_After;
        }

        private void System_Exception_Execute(object sender, SystemEventArgs e)
        {
            try
            {
                var exception = e.Exception;
                var errorloggerHelper = new ErrorLoggerHelper();
                errorloggerHelper.LogError(exception);
            }
            catch
            {
                //do nothing 
            }
        }

        private void Request_End_After(object sender, EventArgs e)
        {
            //since this gets called for each request, HANDLE only "page not found" and log

        }
    }
}

1 个答案:

答案 0 :(得分:2)

我将假设我们的数据库&#34;你的意思是除了Kentico之外的数据库。
由于Kentico已经记录了#34; Page Not Found&#34;事件我建议附加到EventLogInfo.TYPEINFO.Events.Insert.After事件并按EventCode=="PAGENOTFOUND"中所述按{{1}}进行过滤。

截图(v8): enter image description here

另一个选择是使用documentation