entry.Properties[propName].ToString() == "mobile" не оценивается как истина

namespace SignatureCreator
{
    class Program

    {


        static void Main(string[] args)
        {
            string delimiter = ",";

            // set up domain context
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain);


            // find currently logged in user
            UserPrincipal up = UserPrincipal.Current;
            string displayName = up.DisplayName;
            string title = up.Description;
            string phoneNumber = up.VoiceTelephoneNumber;
            string[] userName = displayName.Split(new string[] { delimiter }, StringSplitOptions.None);
            string firstName = userName[1];
            string lastName = userName[0];
            firstName = firstName.Substring(1);
            firstName = firstName.ToUpper();
            lastName = lastName.ToUpper();
            Console.WriteLine(firstName +" "+ lastName);
            Console.WriteLine(title);
            Console.WriteLine(phoneNumber);

            DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry;
            System.DirectoryServices.PropertyCollection props = entry.Properties;

            /*
             * 
             */

            foreach (string propName in props.PropertyNames)
            {
                if (entry.Properties[propName].ToString() == "mobile")
                {
                    Console.WriteLine(propName + " = " + entry.Properties[propName].Value);
                }
                else
                {
                    Console.WriteLine(propName + " = NULL");
                }
            }


            Console.ReadKey();
            StringBuilder sb = new StringBuilder();

        }
    }
}

Я пытаюсь просмотреть информацию об активном каталоге, чтобы найти номер мобильного телефона пользователя. Но я не могу понять, как пройти через это и вернуть его. Даже когда я просто оцениваю propname == mobile, он не возвращает true. Что я делаю неправильно?

1 ответ

Решение

Ты можешь попробовать с DirectoryEntry.RefreshCache и он загружает значения указанных свойств в кэш свойств.

А также вы можете проверить, содержится ли данное свойство в DirectoryEntry используя DirectoryEntry.Properties.Contains метод. если свойство существует, вы можете получить его значение без зацикливания всех свойств.

entry.RefreshCache(new string[]{"mobile"});
if(entry.Properties.Contains("mobile"))
    Console.WriteLine("mobile= " + entry.Properties["mobile"].Value);
else
    Console.WriteLine("mobile  = NULL");
Другие вопросы по тегам