编程语言
首页 > 编程语言> > 忽略过滤器顺序的ASP.Net MVC

忽略过滤器顺序的ASP.Net MVC

作者:互联网

只是想知道是否有人对为什么忽略我的过滤器顺序有任何想法…

[AcceptVerbs(HttpVerbs.Get)]
[Compress(Order = 1)]
[EnhancedOutputCache(Order = 2, Duration = 5, VaryByParam = "true", Location = OutputCacheLocation.ServerAndClient)]
public virtual ActionResult Index()
{
    return View();
} 

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        base.OnResultExecuted(filterContext);
    }
}

public class EnhancedOutputCacheAttribute : OutputCacheAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
    }
}

在这种情况下,EnhancedOutputCache在压缩之前运行.我希望压缩首先发生,但压缩第二次发生.

附带说明一下,我正在使用ASP.Net MVC 2.0预览版1 …

解决方法:

您将覆盖周期的不同部分. OnResultExecuting(OnResultExecuting)将在OnResultExecuted(CompressAttribute)之前发生.

我将不得不进行验证,但这是需要进行压缩和输出缓存的地方,因此在输出缓存之前,它甚至可能不是压缩的选项.我可能对此有充分的理由.

标签:action-filter,asp-net,c,net,asp-net-mvc
来源: https://codeday.me/bug/20191024/1920107.html