我有以下Repository方法,用于检索当前的Active Directory用户: -
public List<DomainContext> GetADUsers(string term=null)
{
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();
foreach (Principal p in searchResults)
{
if (term == null || p.SamAccountName.ToString().ToUpper().StartsWith(term.ToUpper()))
{
DomainContext dc = new DomainContext();
dc.DisplayName = p.DisplayName;
dc.UserPrincipalName = p.UserPrincipalName;
dc.Name = p.Name;
dc.SamAccountName = p.SamAccountName ;
dc.DistinguishedName = p.DistinguishedName;
results.Add(dc);
}}
}
return results;
}
因此AD用户不会经常更改,所以我需要将此方法的结果缓存大约2个小时。所以对此方法的任何调用都不应该调用Active Directory?我实际上是在尝试实现与Action方法中定义的[OutputCache]
相同的逻辑。
此致
答案 0 :(得分:1)
由于要为您编写整个解决方案有点困难,我将指向Microsoft Patterns & Practices Caching Application Block。
阅读文档,您需要的实现应该非常简单。
我希望它有所帮助!
编辑:
我找到了更新的文档:http://msdn.microsoft.com/en-us/library/ff953179%28v=pandp.50%29.aspx