ActiveDirectory中的用户Guid是否为Nullable?

时间:2016-08-28 05:14:54

标签: c# asp.net active-directory

我使用的是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。

1 个答案:

答案 0 :(得分:1)

UserPrincipal类的Principal属性继承自基础Nullable<Guid>类,其定义为Principal。这就是它的方式 - 你需要处理这个问题。

为什么选择将其定义为可空 - 我不知道。根据我对AD的体验,您遇到的所有来自GUID的对象 - 群组,计算机,用户等 - 将会分配scope :future_seminars, -> { joins(:schedules).where("schedules.starts_at >", Time.current) }