使用“ FilterExecutingContext”时出错,如何使用ActionFilterAttribute类的“ OnActionExecuting”方法?

pro*_*011 2 c# asp.net-mvc c#-4.0

我想使用以下代码在我的项目中实现HTML压缩。

public class CompressFilter : ActionFilterAttribute {

public override void OnActionExecuting(FilterExecutingContext 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("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);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

但是,我在上出错了FilterExecutingContext。它显示错误,code not found... 因此请给我建议我应该如何在项目中实现HTML压缩。还有其他建议请告诉我。

谢谢。

hai*_*770 5

的方法签名OnActionExecuting已更改为:

public override void OnActionExecuting(ActionExecutingContext filterContext)
Run Code Online (Sandbox Code Playgroud)

替换FilterExecutingContextActionExecutingContext

参见MSDN