Pergunta

Parece que todos os esforços falando com Sharepoint através dos seus serviços web precisa de um domínio \ nome do usuário. Por exemplo:

UserProfileService.GetUserProfileByName(string accountName) 

O ACCOUNTNAME deve ser de domínio \ nome do usuário.

Se eu só tenho o nome completo (Nome Sobrenome), é possível se comunicar com o SharePoint? Existe alguma maneira de converter o nome completo no domínio \ nome de usuário? É de domínio \ nome do usuário a única maneira de fazê-lo?

Agradecemos antecipadamente. :)


Obrigado pelas respostas. :)

Os olhares código como este:

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;
}
Foi útil?

Solução

Eu suponho que você poderia tentar consulta do Active Directory para o primeiro e último nome do usuário para determinar o nome da conta.

Outras dicas

UserGroup.GetAllUserCollectionsFromWeb() , pode iterar os resultados para obter o nome de login para um determinado nome de exibição.

Você pode usar um controle PeopleEditor, que vai agarrar o usuário se você digitar o sobrenome, combinação firstname, ou você pode navegar através do diretório.

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

É um incómodo pouco e ridículo, mas funciona. Se você precisa para obtê-lo por meio de programação, você pode fazer como Jason disse acima e obter o SPUserCollection e percorrer, olhando para o SPUser com o nome de exibição apropriado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top