2009-03-06 10 views
1

Web hizmetleri aracılığıyla Sharepoint ile konuştuğunuz her çaba bir etki alanı \ kullanıcı adı gerektiriyor gibi görünüyor. Örneğin,Sharepoint ile nasıl konuşulurum: Yalnızca Tam Adm var

HesapAdı, etki alanı \ kullanıcı adı olmalıdır.

Yalnızca tam adı (FirstName LastName) aldıysam SharePoint ile iletişim kurmak mümkün mü? Tam adı, etki alanı \ kullanıcı adına dönüştürmenin herhangi bir yolu var mı? Etki alanı \ kullanıcı adı bunu yapmanın tek yolu mu?

Önceden teşekkür ederiz. :)


Cevaplar için teşekkür ederiz. :)

kod şuna benzer:

using System.DirectoryServices; 



const string ADPATH = "LDAP://myLDAPserver,validUserforAD"; 
const string USERNAME = "myDomain\\myUserName"; 
const string PASSWORD = "myPassword"; 
const string DOMAIN = "myDomain\\"; 

public static DirectoryEntry GetDirectoryObject() 
{ 
     DirectoryEntry directoryObject = new DirectoryEntry(ADPATH, USERNAME, PASSWORD, AuthenticationTypes.Secure); 
     return directoryObject; 
} 


public string GetUserNameByCompleteName(string completeName) 
{ 
      DirectoryEntry adObject = GetDirectoryObject(); 

      //filter based on complete name 
      DirectorySearcher searcher = new DirectorySearcher(adObject); 
      searcher.Filter = "displayname=" + completeName; 
      SearchResult result = searcher.FindOne(); 

      DirectoryEntry userInfo = result.GetDirectoryEntry(); 

      //getting user name 
      string userName = (string)userInfo.Properties["samaccountname"].Value ?? string.Empty; 
      userInfo.Close(); 
      adObject.Close(); 

      return DOMAIN + userName; 
} 

cevap

1

Sana hesap adlarını belirlemek için kullanıcının adını ve soyadını için aktif dizin sorgulamak için deneyebilirsiniz varsayalım.

+0

Teşekkür ederiz. İyi çalışıyor. – ira

1

UserGroup.GetAllUserCollectionsFromWeb() kullanmayı deneyin, sonuçları belirli bir görünen ad için Oturum Açma Adı almak üzere yineleyebilirsiniz.

+0

Cevabınızı okumadan önce AD'ye bir sorgu uygulandı. Alternatif cevap için teşekkürler Jason! – ira

1

Kullanıcı adı, soyadı, firstname birleşimi yazdığınızda veya dizine göz atabilmeniz durumunda kullanıcıyı yakalayacak PeopleEditor denetimini kullanabilirsiniz.

people = new PeopleEditor(); 
people.MultiSelect = false; 

this.Controls.Add(people); 

... 

int userID = Int32.Parse((((PickerEntity)people.ResolvedEntities[0]).EntityData["SPUserID"]).ToString()); 

SPUser user = SPContext.Current.Site.RootWeb.SiteUsers.GetByID(userID); 

Biraz hantal ve gülünç ama işe yarıyor. Programsal olarak almanız gerekiyorsa, Jason'ın yukarıda belirttiği gibi yapıp SPUserCollection numarasını almasını ve uygun ekran adıyla SPUser'u aramasını sağlayabilirsiniz.

+0

Katkıda bulunduğunuz için teşekkürler, Andy! :) – ira