如何将服务器端Application Insights遥测技术完美地集成到我的Umbraco / Articulate网站中?

时间:2016-03-31 08:43:18

标签: c# asp.net-mvc azure umbraco azure-application-insights

我通过以下方式创建了一个Umbraco网站

  1. 打开Visual Studio
  2. 创建一个新的空MVC项目
  3. 添加了current Umbraco nuget package
  4. 在Azure中托管项目
  5. 成功执行Umbraco安装程序
  6. 安装了current Articulate package
  7. 现在我想整合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实例(可能是客户端和服务器端部分)吗?

1 个答案:

答案 0 :(得分:3)

你不应该为此触摸Umbraco Core。您可以很容易地将其作为自己的自定义代码来执行,然后您可以将其转换为插件。您可以添加为类的属性,并将其挂钩,而不是FilterConfig事件,您可以使用Umbraco启动处理程序:https://our.umbraco.org/documentation/reference/events/application-startup

您可以在启动处理程序的ApplicationStarted事件处理程序中注册您的过滤器,该处理程序应该可以正常工作。