2009-03-06 47 views
1

似乎每個與Sharepoint通過其Web服務交流的努力都需要一個域\用戶名。例如:如何與Sharepoint交談:如果我只有全名

UserProfileService.GetUserProfileByName(string accountName) 

accountName應該是域\用戶名。

如果我只有全名(FirstName LastName),是否可以與SharePoint通信? 有什麼辦法將全名轉換爲域名\用戶名? 域\用戶名是唯一的方法嗎?

預先感謝您。 :)


謝謝你的答案。 :)

的代碼看起來是這樣的:

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; 
} 

回答

1

我想你可以嘗試Active Directory中查詢用戶的名字和姓氏,以確定他們的帳戶名。

+0

謝謝。它運作良好。 – ira 2009-03-10 00:41:10

1

嘗試使用UserGroup.GetAllUserCollectionsFromWeb(),可迭代結果以獲取給定顯示名稱的登錄名。

+0

在閱讀您的答案之前,已經實現了對AD的查詢。謝謝你的替代答案,傑森! – ira 2009-03-10 00:42:56

1

您可以使用PeopleEditor控件,如果您鍵入姓氏,名字組合或者您可以瀏覽目錄,則該控件將抓取用戶。

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); 

這有點繁瑣和荒謬,但它的工作原理。如果您需要以編程方式獲取它,您可以按照上面的Jason所述完成並獲取SPUserCollection並循環查找,並以適當的顯示名稱查找SPUser

+0

謝謝你的貢獻,安迪! :) – ira 2009-03-10 00:52:45