2016-11-23 4 views
2

J'essaie de récupérer le nom d'utilisateur à partir d'Active Directory. J'ai trouvé ce morceau de code à essayer cependant, il ne reconnaît pas la partie User de User.Identity.Name. J'ai cherché à voir si je devais ajouter une autre référence ou une autre assemblée mais je n'ai rien vu. Existe-t-il un meilleur moyen d'obtenir le nom d'utilisateur à partir d'Active Directory?Récupération du nom d'utilisateur à partir d'Active Directory

static string GetUserName(){ 

     string name = ""; 
     using (var context = new PrincipalContext(ContextType.Domain)) 
     { 
      var usr = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
      if (usr != null) 
       name = usr.DisplayName; 
     } 

    } 

Répondre

1

Vous pouvez utiliser WindowsIdentity.GetCurrent

using System.Security.Principal; 

static string GetUserName() 
{ 
    WindowsIdentity wi = WindowsIdentity.GetCurrent(); 

    string[] parts = wi.Name.Split('\\'); 

    if(parts.Length > 1) //If you are under a domain 
     return parts[1]; 
    else 
     return wi.Name; 
} 

Utilisation:

string fullName = GetUserName(); 

heureux de vous aider!

+0

Pour une raison quelconque lorsque je tente ce la '' wi' dans wi.Name.Split' n'est pas reconnu –

+0

parlez-vous "à l'aide System.Security.Principal;"? –

+0

oui je le référence. Il dit - un initialiseur de champ ne peut pas référencer le champ, la méthode ou la propriété non-statique 'OpenBurn.Controllers.RequestBurnsController.wi' –

0

Que diriez-vous:

public string GetUserName() 
{ 
    string name = ""; 

    using (var context = new PrincipalContext(ContextType.Domain)) 
    { 
     var usr = UserPrincipal.Current; 

     if (usr != null) 
     { 
      name = usr.DisplayName; 
     } 
    } 
}