Frage

Es scheint, wie jede Anstrengung zu sprechen seine Web-Services zu Sharepoint durch eine Domäne \ Benutzername muss. Zum Beispiel:

UserProfileService.GetUserProfileByName(string accountName) 

Die account sollte Domäne \ Benutzername sein.

Wenn ich nur vollständigen Namen (Vorname Name) bekam, ist es möglich, mit Sharepoint zu kommunizieren? Gibt es eine Möglichkeit die vollständigen Namen in der Domäne \ Benutzername-Format konvertieren? Ist Domäne \ Benutzer die einzige Möglichkeit nennen, es zu tun?

Vielen Dank im Voraus. :)


Vielen Dank für die Antworten. :)

Der Code sieht wie folgt aus:

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;
}
War es hilfreich?

Lösung

Ich nehme an, dass Sie Active Directory für die Benutzer Vor- und Nachnamen abfragen könnten versuchen, ihre Kontonamen zu bestimmen.

Andere Tipps

versuchen Sie es mit UserGroup.GetAllUserCollectionsFromWeb() , können die Ergebnisse iterieren die bekommen Login-Name für einen bestimmten Anzeigenamen ein.

Sie können eine PeopleEditor Steuerung verwenden, die den Benutzer greifen wird, wenn Sie in dem Nachnamen, Vornamen Kombination eingeben, oder Sie können durch das Verzeichnis.

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

Es ist ein bisschen umständlich und lächerlich, aber es funktioniert. Wenn Sie sie benötigen programmatisch zu erhalten, können Sie tun, wie Jason oben gesagt und erhalten die SPUserCollection und Schleife durch, für den SPUser mit dem entsprechenden Anzeigenamen suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top