ASP.NET MVC5 使用ActionFilter过滤器属性压缩内容,却无法在过滤器内部获取网页内容,网上很多文章说的都是ASP.NET MVC3的,都试过不行,最终发现filterContext.HttpContext.Response.Filter属性只能写,不能读,所以压缩无效
public class CompressContent : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (!string.IsNullOrEmpty(acceptEncoding))
{
string[] acceptEncodings = acceptEncoding.ToLower().Split(',');
var response = filterContext.HttpContext.Response;
if (acceptEncodings.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncodings.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
}
下面几个方法我也都试过,不行
public virtual void OnActionExecuted(ActionExecutedContext filterContext);
public virtual void OnActionExecuting(ActionExecutingContext filterContext);
public virtual void OnResultExecuted(ResultExecutedContext filterContext);
public virtual void OnResultExecuting(ResultExecutingContext filterContext);
求大神解决。