public virtual void OnExecuted(ActionExecutedContext context)
		{
		}
        private static ActionExecutedContext InvokeActionFilter(IActionFilter filter, 
            ActionExecutionContext context, Func<ActionExecutedContext> continuation)
        {
            filter.OnExecuting(context);
            if (context.Cancel)
                return new ActionExecutedContext(context, null) { 
					Result = context.Result 
				};

            bool wasError = false;
            ActionExecutedContext postContext = null;
            try
            {
                postContext = continuation();
            }
            catch (Exception ex)
            {
                wasError = true;
                postContext = new ActionExecutedContext(context, ex);
                filter.OnExecuted(postContext);

                if (!postContext.ExceptionHandled)
                    throw;
            }
            if (!wasError)
                filter.OnExecuted(postContext);
            
            return postContext;
        }
		/// <summary>
        /// Enables the output compression 
        /// using gzip/deflate
        /// </summary>
        /// <param name="ctx">The context of the current controller action</param>
        public override void OnExecuted(ActionExecutedContext ctx)
        {
			HttpContextBase context = ctx.HttpContext;
            if (CanAddCompressionFilter(ctx))
            {
                if (IsEncodingAccepted(context, DEFLATE))
                {
					AddResponseFilter(context.Response, filter => 
						new DeflateStream(filter, CompressionMode.Compress));

                    SetEncoding(context, DEFLATE);
                }
                else if (IsEncodingAccepted(context, GZIP))
                {
					AddResponseFilter(context.Response, filter =>
						new GZipStream(filter, CompressionMode.Compress));
                    SetEncoding(context, GZIP);
                }
                context.Items.Add(COMPRESS_ENABLED_KEY, true);
				context.Response.AppendHeader("Vary", "Content-Encoding");
            }
        }
		public override void OnExecuted(ActionExecutedContext context)
		{
			// does nothing, just overrides the base implementation.
		}