【发布时间】:2014-03-01 06:21:03
【问题描述】:
我有一个全局 NoCache 过滤器,如下所示:https://stackoverflow.com/a/12964123/78739
此全局无缓存过滤器适用于所有操作。我有一个案例,我需要允许使用 OutputCacheAttribute 缓存一个特定的操作。我在想在 NoCache 过滤器中我会检查刚刚执行的操作是否具有 OutputCacheAttribute。如果是这样,它不会应用无缓存设置。例如,我的代码是:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public sealed class NoCacheAttribute : FilterAttribute, IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
if (/* action does not have OutputCacheAttribute */)
{
var cache = filterContext.HttpContext.Response.Cache;
cache.SetCacheability(HttpCacheability.NoCache);
cache.SetRevalidation(HttpCacheRevalidation.ProxyCaches);
cache.SetExpires(DateTime.Now.AddYears(-5));
cache.AppendCacheExtension("private");
cache.AppendCacheExtension("no-cache=Set-Cookie");
cache.SetProxyMaxAge(TimeSpan.Zero);
}
}
}
问题是我不知道如何从传递给 OnResultExecuted 方法的 ResultExecutedContext 变量中获取操作及其属性。
【问题讨论】:
标签: c# asp.net-mvc-4