如何与Sharepoint交谈:如果我只有全名

时间:2009-03-06 01:42:53

标签: sharepoint sharepoint-2007

似乎每一次通过其Web服务与Sharepoint交谈的努力都需要一个域\用户名。例如:

UserProfileService.GetUserProfileByName(string accountName) 

accountName应为domain \ user name。

如果我只有全名(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;
}

3 个答案:

答案 0 :(得分:1)

我想您可以尝试查询活动目录以查找用户的名字和姓氏,以确定其帐户名称。

答案 1 :(得分:1)

尝试使用UserGroup.GetAllUserCollectionsFromWeb(),可以迭代结果以获取给定显示名称的登录名。

答案 2 :(得分: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