是否可以缓存自定义ActionFilterAttribute的结果?

时间:2013-02-11 20:59:31

标签: asp.net-mvc-4 dynamics-crm-2011

我有一个MVC网站,它使用AD身份验证为同样是CRM 2011的用户显示数据。用户的CRM权限取决于他们在CRM中的角色,因此目前OnActionExecuting方法获取执行用户的权限域名,并查询CRM的角色。如果他们没有有效的角色,则会返回无效的权限视图。

对CRM的调用很慢,如果必须为每个请求发生,就会变得昂贵。我可以在MVC 3 release notes中看到过滤器被积极缓存,但不太确定这对我意味着什么。

我希望能够根据用户的域名缓存用户的权限,但听起来可能已经发生了吗?

1 个答案:

答案 0 :(得分:2)

如果你是referring to following statement,我认为你明白这一点是错误的:

  

在ASP.NET MVC 3中,过滤器被更积极地缓存。因此,   任何不正确地存储实例状态的自定义操作过滤器都可能   被打破了。

这并不意味着缓存过滤器的结果。这意味着过滤器本身将被缓存,并将被重用于多个请求。它与CRM插件相当。你不应该跟踪它中的状态,或者如果你这样做,你必须小心不要输入并发的乐趣。

在您的情况下,我会使用例如MemoryCache来缓存用户在内存中的角色/权限一段时间。