无法使用 MsGraph - .Net 4.8 从 DirectoryObject 中提取 sAMAccountName

问题描述 投票:0回答:1

我在从 DirectoryObject 中提取一些非默认属性时遇到了奇怪的错误,可以使用一些指导。

我正在使用以下内容来获取当前用户的经理

            GraphServiceClient graphServiceClient = this.GetGraphServiceClient();
            var managerInfo = await graphServiceClient.Me.Manager
                .Request()
                .Select("onPremisesSamAccountName,displayName,jobTitle,userPrincipalName,directreports")
                .GetAsync();

            user.ManagerUpperEmail = GetDirObjPropertyValue(manager, "UserPrincipalName");
            user.ManagerUpperName = GetDirObjPropertyValue(manager, "DisplayName");
            user.ManagerUpperID = GetDirObjPropertyValue(manager, "onPremisesSamAccountName");

当我在 VS2019 Inspector 中查看 managerInfo 对象时,我能够看到所有这些属性(如下所示),但是当我尝试使用以下命令访问它时,由于显示的部分,我在 var3 赋值中收到 NullReferenceException var2 返回 null。当针对属性 DisplayNameUserPrincipalName

运行相同的代码时,不会发生这种情况
        private string GetDirObjPropertyValue(DirectoryObject dObj, string key)
        {
            var var1 = dObj.GetType();
            var var2 = dObj.GetType().GetProperty(key);
            var var3 = dObj.GetType().GetProperty(key).GetValue(dObj, null);
            return (String) dObj.GetType().GetProperty(key).GetValue(dObj, null);
        }

在下面返回一个空值。这非常适合 DisplayName 和 UserPrincipalName 等默认属性。

c# properties microsoft-graph-api visual-studio-2019
1个回答
0
投票

属性名称区分大小写。 您需要使用

OnPremisesSamAccountName
而不是
onPremisesSamAccountName

© www.soinside.com 2019 - 2024. All rights reserved.