2008-09-14 19 views

cevap

5

sizin için işi yardımcı gereken bir kod parçacığı olduğunu. Eğer sıkı WSS 3.0 bahsedecek olursak

//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 
+1

profile [PropertyContants.PictureURL] bir koleksiyon döndürür, böylece doğrudan bir dizeye gönderilemediğinizden bu değeri almanız gerekir. –

+1

Bu sadece MOSS için çalışır - WSS tek başına profil yöneticisi hizmeti veya sınıf içermez. –

2

Ah, UserProfileManager sınıfını kullanmanız gerekir. Burada fazla bilgi: http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.userprofilemanager.aspx

Örnek kullanım: Burada

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} 
    // 
} 
3

(değil: Sen (... vb, resim URL'sini gerçekte var sağlanması, profil gerçekte var sağlanması) Herhangi özel durumları önlemek için bazı ek doğrulama yapmanız gerekebilir MOSS), o zaman aslında global kullanıcı profillerine sahip değilsiniz, ancak her site koleksiyonundaki bir gizli Kullanıcı Bilgisi Listesi. Bu, Microsoft.Office.Server ad alanlarındaki hiçbir şeyin size sunulmadığı anlamına gelir. Bununla birlikte, kullanıcının bilgi URL'sini bildiğiniz sürece Kullanıcı Bilgileri Listesini programlı olarak güncelleyebilirsiniz. Bir çeşit yükseltilmiş ayrıcalıklarla koştuğunuz sürece, başka bir SharePoint listesiyle yaptığınız gibi manipulate this list'u kullanabilmeniz gerekir. Bu listenin yalnızca bir site koleksiyonunun kapsamı için uygun olduğunu unutmayın. Bu nedenle, kullanıcıların bir fotoğraf URL'si olması için bu güncellemeyi her yerde yapmaları gerekir. Ayrıca, kullanıcılar birileri kendilerine bir tür izin verene kadar Kullanıcı Bilgileri Listesine giremez, bu nedenle alanınızdaki her kullanıcı oraya girmeyecektir.

Bunu işlemenin temiz yolu, kesinlikle Kullanıcı Profili mekanizmasının MOSS'dur, ancak bu seçenek de MOSS ve WSS hakkında soru sormak için gerçekten güncelleştirilmesi gerekir.