Domanda

Sembra che ogni sforzo per parlare con Sharepoint attraverso i suoi servizi web abbia bisogno di un dominio \ nome utente. Ad esempio:

UserProfileService.GetUserProfileByName(string accountName) 

Il nome account deve essere dominio \ nome utente.

Se ho solo il nome completo (FirstName LastName), è possibile comunicare con SharePoint? Esiste un modo per convertire il nome completo in dominio \ nome utente? Dominio \ nome utente è l'unico modo per farlo?

Grazie in anticipo. :)


Grazie per le risposte. :)

Il codice è simile al seguente:

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;
}
È stato utile?

Soluzione

Suppongo che potresti provare a interrogare active directory per il nome e il cognome dell'utente per determinare il loro nome account.

Altri suggerimenti

prova a utilizzare UserGroup.GetAllUserCollectionsFromWeb () , può iterare i risultati per ottenere il nome di accesso per un determinato nome visualizzato.

Puoi usare un controllo PeopleEditor , che catturerà l'utente se digiti il ??cognome, la combinazione del nome o puoi navigare attraverso la directory.

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

È un po 'ingombrante e ridicolo, ma funziona. Se hai bisogno di ottenerlo a livello di codice, puoi fare come detto sopra Jason e ottenere SPUserCollection e scorrere, cercando il SPUser con il nome visualizzato appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top