ASP.NET MVC - Response.Filter es nulo cuando se usa ActionFilterAttribute en RegisterGlobalFilters ()

Quiero usar G-ZIP en mi sitio web, busqué en Google el siguiente código:

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
        if (!string.IsNullOrEmpty(acceptEncoding))
        {
            acceptEncoding = acceptEncoding.ToLower();
            var response = filterContext.HttpContext.Response;
            if (acceptEncoding.Contains("gzip"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("deflate"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
    }
}

Funciona bien cuando configuro el atributo en un Controlador o una Acción.

[Compress]
public class PostController : Controller

No quiero hacer esto en todos los códigos, así que registré este atributo en

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new CompressAttribute());
}

Pero cuando ejecuto la aplicación, la excepción vino en esta línea de código:

response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);

La respuesta. El filtro es nulo.

Quiero saber por qué sucede esto y cómo resolverlo. ¡Gracias!

- Actualización:

Descubrí que la excepción solo ocurre cuando el controlador contiene una acción secundaria y se está invocando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta