How do I compress a Json result from ASP.NET MVC with IIS 7.5

前端 未结 5 785
春和景丽
春和景丽 2021-01-30 00:22

I\'m having difficulty making IIS 7 correctly compress a Json result from ASP.NET MVC. I\'ve enabled static and dynamic compression in IIS. I can verify with Fiddler that normal

5条回答
  •  忘了有多久
    2021-01-30 00:38

    The ActionFilterAttribute approach updated for ASP.NET 4.x and Includes Brotli.NET package.

    using System;
    using System.IO.Compression;
    using Brotli;
    using System.Web;
    using System.Web.Mvc;
    
    
    public class CompressFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;
    
            string acceptEncoding = request.Headers["Accept-Encoding"];
            if (string.IsNullOrEmpty(acceptEncoding)) return;
    
            acceptEncoding = acceptEncoding.ToUpperInvariant();
            HttpResponseBase response = filterContext.HttpContext.Response;
    
            if (acceptEncoding.Contains("BR"))
            {
                response.AppendHeader("Content-encoding", "br");
                response.Filter = new BrotliStream(response.Filter, CompressionMode.Compress);
            }
            else 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);
            }
        }
    }
    

提交回复
热议问题