2

我读过的所有示例都将 OutputCache 应用于控制器操作方法。但现在我有一个存储库方法,它检索 Active Directory 用户。所以我想缓存这个模型类,例如:

[OutputCache(CacheProfile = "long", Location = OutputCacheLocation.Server, VaryByParam = "term")]
public List<DomainContext> GetADUsers(string term)
{
    List<DomainContext> results = new List<DomainContext>();
    using (var context = new PrincipalContext(ContextType.Domain, "WIN-SPDEV"))
    using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
    {
        var searchResults = searcher.FindAll(); 

为了实现这一点,我必须在我的存储库模型类中包含以下内容:-

using System.Web.Mvc;
using System.Web.UI;

所以添加缓存设置并包含`System.web.mvc + system.Web.UI,插入存储库模型类是错误的还是不好的做法?

4

1 回答 1

4

所以添加缓存设置并包含`System.web.mvc + system.Web.UI,插入存储库模型类是错误的还是不好的做法?

这不仅是不好的做法,而且根本不起作用,因为该OutputCache属性仅对缓存整个输出的控制器操作有影响。您可以使用MemoryCache缓存方法的结果。所以在这里您可以先查看缓存中是否存储了用户列表,如果没有,则查询 AD 并将结果缓存回来。

于 2013-07-16T10:31:31.707 回答