我的任务是从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
}
}
}
答案 0 :(得分:2)
我将假设我们的数据库&#34;你的意思是除了Kentico之外的数据库。
由于Kentico已经记录了#34; Page Not Found&#34;事件我建议附加到EventLogInfo.TYPEINFO.Events.Insert.After
事件并按EventCode=="PAGENOTFOUND"
中所述按{{1}}进行过滤。
截图(v8):
另一个选择是使用documentation。