我使用的是ASP.NET MVC,这是我的模型:
public class AdContactInfo
{
public Guid Guid { get; set; }
public string FullName { get; set; }
}
然后使用此代码段,我尝试搜索用户列表:
using (var searcher = new PrincipalSearcher(new UserPrincipal(principal) { DisplayName = term + "*" }))
{
var result = searcher.FindAll();
foreach (var item in result)
{
list.Add(new AdContactInfo
{ FullName = item.Name,
Guid = item.Guid });
}
}
我很惊讶,Guid = item.Guid
行有一个错误,指出item.Guid
可以为空,无法转换为Guid
。
经过一些研究,我没有找到任何说明ActiveDirectory中的用户指南可以包含null的结果。但是,我发现article表示如果我将ContextType
设置为Machine,它将始终返回null。
我想知道为什么它是Nullable。
答案 0 :(得分:1)
UserPrincipal
类的Principal
属性继承自基础Nullable<Guid>
类,其定义为Principal
。这就是它的方式 - 你需要处理这个问题。
为什么选择将其定义为可空 - 我不知道。根据我对AD的体验,您遇到的所有来自GUID
的对象 - 群组,计算机,用户等 - 将会分配scope :future_seminars, -> { joins(:schedules).where("schedules.starts_at >", Time.current) }
。