【问题标题】:ASP.Net MVC ignoring filter orderASP.Net MVC 忽略过滤器顺序
【发布时间】:2009-10-01 06:44:37
【问题描述】:

只是想知道是否有人知道我的过滤顺序被忽略的原因...

[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 在 Compress 之前运行......我希望压缩首先发生,但它运行第二......任何想法为什么

作为旁注,我正在使用 ASP.Net MVC 2.0 preview 1...

【问题讨论】:

  • 出于兴趣,你为什么要这个动作顺序?
  • 在缓存之前压缩...这样只会发生一次...

标签: c# asp.net .net asp.net-mvc action-filter


【解决方案1】:

您正在覆盖循环的不同部分。 OnResultExecuting (OnResultExecuting) 会在 OnResultExecuted (CompressAttribute) 之前发生。

我必须验证,但这是需要进行压缩和输出缓存的地方,因此在输出缓存之前它甚至可能不是压缩选项。这可能有一个超出我理解范围的充分理由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多