Как поговорить с Sharepoint: если бы я только получил полное имя - PullRequest
1 голос
/ 06 марта 2009

Кажется, что при каждом общении с 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;
}

Ответы [ 3 ]

1 голос
/ 06 марта 2009

попробуйте использовать UserGroup.GetAllUserCollectionsFromWeb(), можете повторять результаты, чтобы получить имя для данного заданного отображаемого имени.

1 голос
/ 06 марта 2009

Вы можете использовать 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);

Это немного громоздко и нелепо, но работает. Если вам нужно получить его программно, вы можете сделать, как сказал выше Джейсон, и получить SPUserCollection и пройтись по нему, ища SPUser с соответствующим отображаемым именем.

1 голос
/ 06 марта 2009

Я полагаю, что вы можете попытаться запросить в активном каталоге имя и фамилию пользователя, чтобы определить имя его учетной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...