将输出缓存属性设置为条件ASP.net MVC

时间:2012-06-20 09:55:47

标签: asp.net-mvc asp.net-mvc-3 attributes outputcache

我正在使用输出缓存属性来缓存我的页面,

[OutputCache(Duration = 50000)]
    public ActionResult GetRidOfZombies()
    {
       // Code 
    }

现在问题是我有两个域运行相同的应用程序abc.comxyz.com 当任何用户在xyz.com中看到我的网站时,我希望这样做,然后此缓存属性减少到[OutputCache(Duration = 50)] ....我该怎么做。我在谷歌搜索了很多,但没有找到任何解决方案。提前致谢 !

1 个答案:

答案 0 :(得分:1)

您可以编写自定义属性:

public class MyDomainAwareOutputCacheAttribute : OutputCacheAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        // TODO: extract the domain from filterContext.HttpContext.Request.Url
        // and set the duration accordingly

        Duration = 50000;

        base.OnResultExecuting(filterContext);
    }
}

然后:

[MyDomainAwareOutputCache]
public ActionResult GetRidOfZombies()
{
    // Code 
}