Frage

Ich versuche, einen Benutzer auf Sharepoint user photo durch das WSS 3.0-Objektmodell abzurufen. Ich habe im Internet nach Lösungen gegrast, aber bisher habe ich es nicht gelungen, einen Weg zu finden, es zu tun. Ist es möglich, und wenn ja, wie?

War es hilfreich?

Lösung

Hier ist ein Code-Snippet, das für Sie zu erledigen den Job helfen soll. Sie müssen möglicherweise einige zusätzliche Validierung tun, alle Ausnahmen zu vermeiden (um sicherzustellen, das Profil tatsächlich vorhanden ist, um sicherzustellen, das Bild URL tatsächlich vorhanden ist, etc ...):

    //get current profile manager
    UserProfileManager objUserProfileManager = new UserProfileManager(PortalContext.Current);
    //get current users profile
    UserProfile profile = objUserProfileManager.GetUserProfile(true);
    //get user image URL
    string imageUrl = (string)profile[PropertyConstants.PictureUrl];

    //do something here with imageUrl

Andere Tipps

Wenn Sie streng über WSS im Gespräch sind 3.0 (und nicht MOSS), dann haben Sie wirklich keine globalen Benutzerprofile per se, sondern eine hiddenh Benutzerinformation Liste in jeder Websitesammlung. Das bedeutet nichts von dem Zeug in den Microsoft.Office.Server Namensraum steht Ihnen zur Verfügung.

Sie können jedoch die Benutzerinformationen Liste programmatisch so lange aktualisieren, wie Sie die URL eines Benutzers Bild kennen. Solange Sie mit irgendeiner Art von erweiterten Rechten ausführen, sollten Sie a href der Lage sein, <= "http://www.sharepointblogs.com/jimyang/archive/2006/12/05/update-wss-3- 0-user-profile-programmatically.aspx“rel = "nofollow noreferrer"> manipuliert diese Liste genauso wie Sie es mit einer anderen Sharepoint-Liste. Beachten Sie, dass diese Liste nur gut für den Rahmen einer Websitesammlung ist, so würde Benutzer das gleiche Update vornehmen müssen alle über den Ort, um tatsächlich ein Foto URL haben. Plus-Nutzer erhalten nicht in die Benutzerinformation Liste, bis jemand eine Art Erlaubnis ihnen zuweist, so dass nicht jeder Benutzer in Ihrer Domain drin sein.

Die saubere Art und Weise zu handhaben ist auf jeden Fall der Benutzerprofil-Mechanismus ist MOSS, aber wenn das eine Option sollte die Frage wirklich aktualisiert werden über MOSS vs WSS zu stellen.

Ah, Sie haben die Userprofile Klasse zu verwenden. Weitere Informationen hier: http: // msdn. microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

Beispiel für die Verwendung:

public override void ItemAdded(SPItemEventProperties properties)
{
    // Get list item on which the event occurred.
    SPListItem item = properties.ListItem;

    // Set the Author Image field to the user's PictureURL if it exists.
    using (SPWeb web = properties.OpenWeb())
    {
        // Author: {C32DB804-FF2D-4656-A38A-B0394BA5C931}
        SPFieldUserValue authorValue = new SPFieldUserValue(properties.OpenWeb(), item[new Guid("{C32DB804-FF2D-4656-A38A-B0394BA5C931}")].ToString());

        UserProfileManager profileManager = new UserProfileManager(ServerContext.GetContext(web.Site));
        UserProfile profile = profileManager.GetUserProfile(authorValue.LookupId);
        UserProfileValueCollection values = profile[PropertyConstants.PictureUrl];

        if (values.Count > 0)
        {
            // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
            SPFieldUrlValue urlValue = new SPFieldUrlValue(values.Value.ToString());
            item[new Guid("{37A5CA4C-7621-44d7-BF3B-583F742CE52F}")] = urlValue.Url;
        }
    }

    item.Update();

    // News Text: {7F55A8F0-4555-46BC-B24C-222240B862AF}
    //

    // Author Image: {37A5CA4C-7621-44d7-BF3B-583F742CE52F}
    // 

    // Publish Date: {45E84B8B-E161-46C6-AD51-27A42E4992B5}
    //
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top