現在の 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 を呼び出すべきではありませんか? 私は実際[OutputCache]
に、アクション メソッドで定義されているものと同じロジックを実装しようとしています。よろしく