2009-10-01 68 views
3

只是想知道如果任何人有,为什么我的过滤器才能被忽略任何想法...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 ...

+0

出于兴趣,你为什么要这样的行动顺序?在缓存之前压缩 – dove 2009-10-01 07:09:56

+1

....这种方式只发生一次... – vdhant 2009-10-01 13:02:20

回答

5

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

我将不得不验证,但这是压缩和输出缓存需要发生的地方,所以它甚至可能不是您输出缓存之前压缩的选项。这可能是一个超越我的肯定的理由。