我通过以下方式创建了一个Umbraco网站
现在我想整合Application Insights。客户端部分非常简单,我只需要在主视图中添加一些JavaScript代码。
对于服务器端部分,我需要添加以下代码:
using System;
using System.Web.Mvc;
using Microsoft.ApplicationInsights;
namespace MVC2App.Controllers
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AiHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
{
//If customError is Off, then AI HTTPModule will report the exception
if (filterContext.HttpContext.IsCustomErrorEnabled)
{
// Note: A single instance of telemetry client is sufficient to track multiple telemetry items.
var ai = new TelemetryClient();
ai.TrackException(filterContext.Exception);
}
}
base.OnException(filterContext);
}
}
}
// then register AiHandleErrorAttribute in FilterConfig:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AiHandleErrorAttribute());
}
}
我的问题详情如下:
如何在Umbraco核心中尽可能少地集成此代码,以便尽可能轻松地进行更新?集成代码的最佳方法是什么?
我是否需要触摸Umbraco核心或者是否可以更改Articulate代码?甚至更好:我可以创建自己的Umbraco包,它可以将Application Insights特性添加到我的Umbraco实例(可能是客户端和服务器端部分)吗?
答案 0 :(得分:3)
你不应该为此触摸Umbraco Core。您可以很容易地将其作为自己的自定义代码来执行,然后您可以将其转换为插件。您可以添加为类的属性,并将其挂钩,而不是FilterConfig事件,您可以使用Umbraco启动处理程序:https://our.umbraco.org/documentation/reference/events/application-startup
您可以在启动处理程序的ApplicationStarted事件处理程序中注册您的过滤器,该处理程序应该可以正常工作。