For the record, I went back to the Sitecore.Mvc.dll and decompiled it so I could see what the previously registered Sitecore.Mvc.Pipelines.Loader.InitialzeGlobalFilters.cs class was doing. Here it is. I am going to go ahead in my implementation, and configure both of them, rather safe than sorry. I also decompiled the PipelineBasedRequestFilter.cs which also looked like logic i'd rather leave in place.
// Decompiled with JetBrains decompiler
// Type: Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters
// Assembly: Sitecore.Mvc, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 4DE79547-0FD4-45A0-BD18-FFEF21AA18FC
// Assembly location: C:\P2\packages\Sitecore.Mvc.NoReferences.8.2.180406\lib\NET452\Sitecore.Mvc.dll
using Sitecore.Mvc.Filters;
using Sitecore.Pipelines;
using System.Web.Mvc;
namespace Sitecore.Mvc.Pipelines.Loader
{
[UsedImplicitly]
public class InitializeGlobalFilters
{
public virtual void Process(PipelineArgs args)
{
this.AddGlobalFilters(args);
}
protected virtual void AddGlobalFilters(PipelineArgs args)
{
GlobalFilters.Filters.Add(this.CreateRequestFilter());
}
protected virtual object CreateRequestFilter()
{
return (object) new PipelineBasedRequestFilter();
}
}
}
PipelineBasedRequestFilter.cs
// Decompiled with JetBrains decompiler
// Type: Sitecore.Mvc.Filters.PipelineBasedRequestFilter
// Assembly: Sitecore.Mvc, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 4DE79547-0FD4-45A0-BD18-FFEF21AA18FC
// Assembly location: C:\P2\packages\Sitecore.Mvc.NoReferences.8.2.180406\lib\NET452\Sitecore.Mvc.dll
using Sitecore.Diagnostics;
using Sitecore.Mvc.Diagnostics;
using Sitecore.Mvc.Pipelines;
using Sitecore.Mvc.Pipelines.MvcEvents.ActionExecuted;
using Sitecore.Mvc.Pipelines.MvcEvents.ActionExecuting;
using Sitecore.Mvc.Pipelines.MvcEvents.Exception;
using Sitecore.Mvc.Pipelines.MvcEvents.ResultExecuted;
using Sitecore.Mvc.Pipelines.MvcEvents.ResultExecuting;
using System.Web.Mvc;
namespace Sitecore.Mvc.Filters
{
public class PipelineBasedRequestFilter : IActionFilter, IResultFilter, IExceptionFilter
{
public virtual void OnActionExecuted(ActionExecutedContext actionExecutedContext)
{
Assert.ArgumentNotNull((object) actionExecutedContext, nameof (actionExecutedContext));
using (TraceBlock.Start("Action Executed"))
PipelineService.Get().RunPipeline<ActionExecutedArgs>("mvc.actionExecuted", new ActionExecutedArgs(actionExecutedContext));
}
public virtual void OnActionExecuting(ActionExecutingContext actionExecutingContext)
{
Assert.ArgumentNotNull((object) actionExecutingContext, nameof (actionExecutingContext));
using (TraceBlock.Start("Action Executing"))
PipelineService.Get().RunPipeline<ActionExecutingArgs>("mvc.actionExecuting", new ActionExecutingArgs(actionExecutingContext));
}
public virtual void OnException(ExceptionContext exceptionContext)
{
Assert.ArgumentNotNull((object) exceptionContext, nameof (exceptionContext));
using (TraceBlock.Start("Exception event"))
PipelineService.Get().RunPipeline<ExceptionArgs>("mvc.exception", new ExceptionArgs(exceptionContext));
}
public virtual void OnResultExecuted(ResultExecutedContext resultExecutedContext)
{
Assert.ArgumentNotNull((object) resultExecutedContext, nameof (resultExecutedContext));
using (TraceBlock.Start("Result Executed event"))
PipelineService.Get().RunPipeline<ResultExecutedArgs>("mvc.resultExecuted", new ResultExecutedArgs(resultExecutedContext));
}
public virtual void OnResultExecuting(ResultExecutingContext resultExecutingContext)
{
Assert.ArgumentNotNull((object) resultExecutingContext, nameof (resultExecutingContext));
using (TraceBlock.Start("Result Executing event"))
PipelineService.Get().RunPipeline<ResultExecutingArgs>("mvc.resultExecuting", new ResultExecutingArgs(resultExecutingContext));
}
}
}
Edit:
Oh and one more thing, coincidentally I figured out what the PipelineBasedRequestFilter.cs is used for! Turns out it looks like it's being used for some of the profiling in the Sitecore Debugger!
http://www.glass.lu/Blog/Archive/Using%20the%20Sitecore%20Debug%20Tool%20Part%201
