如何:创建和编辑用户配置文件属性
上次修改时间: 2010年7月20日
适用范围: SharePoint Server 2010
用户配置文件属性是附加到用于描述用户个人信息的用户配置文件的名称值对。配置文件存储中包含用户配置文件属性信息的列表。该信息是通过从包含用户帐户的目录进行导入或手动向用户配置文件存储中键入帐户信息来获取的。默认情况下,Microsoft SharePoint Server 2010 可从 Active Directory 目录服务、LDAP 服务器和业务数据目录进行导入。
SharePoint Server 2010 提供了一组默认的常用用户配置文件属性。有时这些属性会不够用,您可能需要其他属性。这种情况下可以创建新属性,并且可用于所有用户配置文件。以下代码示例将向您演示如何向默认属性集添加新的用户配置文件,以及如何设置新属性的隐私策略。
使用代码示例之前,请用实际的值替换 servername。此外,还应在 Microsoft Visual Studio 项目中添加对以下项目的引用:
Microsoft.Office.Server
Microsoft.Office.Server.UserProfiles
Microsoft.SharePoint
System.Web
示例
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using System.Web;
namespace UserProfilesOMApp
{
class Program
{
static void Main(string[] args)
{
//Code example adds a new property called Marital Status.
using (SPSite site = new SPSite("https://servername"))
{
SPServiceContext context = SPServiceContext.GetContext(site);
UserProfileConfigManager upcm = new UserProfileConfigManager(context);
try
{
ProfilePropertyManager ppm = upcm.ProfilePropertyManager;
// create core property
CorePropertyManager cpm = ppm.GetCoreProperties();
CoreProperty cp = cpm.Create(false);
cp.Name = "MaritalStatus";
cp.DisplayName = "Marital Status";
cp.Type = PropertyDataType.StringSingleValue;
cp.Length = 100;
cpm.Add(cp);
// create profile type property
ProfileTypePropertyManager ptpm = ppm.GetProfileTypeProperties(ProfileType.User);
ProfileTypeProperty ptp = ptpm.Create(cp);
ptpm.Add(ptp);
// create profile subtype property
ProfileSubtypeManager psm = ProfileSubtypeManager.Get(context);
ProfileSubtype ps = psm.GetProfileSubtype(ProfileSubtypeManager.GetDefaultProfileName(ProfileType.User));
ProfileSubtypePropertyManager pspm = ps.Properties;
ProfileSubtypeProperty psp = pspm.Create(ptp);
psp.PrivacyPolicy = PrivacyPolicy.OptIn;
psp.DefaultPrivacy = Privacy.Organization;
pspm.Add(psp);
}
catch (DuplicateEntryException e)
{
Console.WriteLine(e.Message);
Console.Read();
}
catch (System.Exception e2)
{
Console.WriteLine(e2.Message);
Console.Read();
}
}
}
}
}