2016-11-24 85 views
0

基本上我想显示来自azure AD的用户的各个领域。 我能够显示除signInName之外的所有字段。 登录属性的类型为: IList IUser.SignInNames {get;}这就是为什么我的逻辑不工作,因为我正在使用一个console.writeline()。编辑1:显示登录从Azure AD

下面是我的代码:

private static async Task PeoplePickerExample(IActiveDirectoryClient client, string searchString) 
     { 

      List<IUser> usersList = null; 
      IPagedCollection<IUser> searchResults = null; 
      try 
      { 
       IUserCollection userCollection = client.Users; 
       searchResults = await userCollection.Where(user => 
        user.UserPrincipalName.StartsWith(searchString) || 
        user.DisplayName.StartsWith(searchString) || 
        user.GivenName.StartsWith(searchString) || 
        user.Surname.StartsWith(searchString)).Take(10).ExecuteAsync(); 
       usersList = searchResults.CurrentPage.ToList(); 
      } 
      catch (Exception e) 
      { 
       Program.WriteError("\nError getting User {0}", Program.ExtractErrorMessage(e)); 
      } 

      if (usersList != null && usersList.Count > 0) 
      { 
       do 
       { 
        int index = 1; 
        usersList = searchResults.CurrentPage.ToList(); 

        foreach (IUser user in usersList) 
        { 
         IUserFetcher userFetcher = user as IUserFetcher; 
         IDirectoryObject manager = await userFetcher.Manager.ExecuteAsync(); 
         IPagedCollection<IDirectoryObject> reports = await userFetcher.DirectReports.ExecuteAsync(); 
         Console.WriteLine("Sign in name:{0}", user.SignInNames); 
         Console.WriteLine("Manager:" + ((IUser)(manager)).DisplayName); 
         Console.WriteLine("Country:{0}", user.Country); 
         Console.WriteLine("Mail Nickname:{0}", user.MailNickname); 
         index++; 
        } 
        searchResults = await searchResults.GetNextPageAsync(); 
       } while (searchResults != null); 
      } 
      else 
      { 
       Console.WriteLine("User not found"); 
      } 

     } 

请检查在这里我用这个行: Console.WriteLine( “登录名:{0}”,user.SignInNames);

回答

1

Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.NonEntityTypeCollectionImpl`1 [Microsoft.Azure.ActiveDirectory.GraphClient.SignInName]

如果没有SignInNames,控制台应用程序将显示上述消息。属性“SignInNames”包含本地帐户用户用于登录Azure Active Directory B2C租户的登录名集合。我们可以在this article找到这个信息。如果您不使用Azure AD B2C租户,或者没有本地帐户用户登录,它将向您显示以上信息。

+0

那么我如何获取corpnet或microsoft用户的signinname?我应该使用哪些财产? – dotnetman

+0

你的名字是什么意思?我们可以使用UserPrincipalName来显示登录电子邮件,或使用显示名称/名字和姓氏显示其登录名。你使用B2C租户吗? –

+0

Hello Jambor, 感谢您的回复。是的,我使用B2C租户。我认为上述代码的问题是我显示signinName的方式。我认为问题在于类型。它是IList Iuser登录名。我认为我们需要在控制台上以不同的方式显示它? – dotnetman