MOSS User Profile(一):获取和遍历
操作Microsoft Office SharePoint Server 2007的User Profile首先需要添加3个DLL组件的引用:
Microsoft.SharePoint
Microsoft.Office.Server
System.Web
然后就可以从SPSite类下的UserProfileManager类来进行访问了。
获取User Profile有两个方法。
一个是通过枚举场中的所有User Profile。另一个是获取单独的User Profile。
但是访问这些User Profile之前,需要在管理中心中的共享服务管理中创建好用户配置文件,其实就是在管理中心中“创建或配置此服务器场的共享服务”,创建一个共享服务管理的网站。然后用户第一次访问他们的“我的网站”时,会自动创建他们的User Profile。
在共享服务管理网站中这个位置可以查看所有的用户配置文件:
①首先打开“用户配置文件和属性”。
②在我的实验环境中,可以看到已经存在了6个用户配置文件了,点击下面的查看用户配置文件即可看到所有的用户配置文件。
③用户配置文件列表
下面来介绍一下如何通过对象模型来进行访问。遍历所有的用户配置文件,根据用户名找到对应的用户配置文件。
using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; using System.Web; using Microsoft.Office.Server; using Microsoft.Office.Server.Administration; using Microsoft.Office.Server.UserProfiles;
namespace ConsoleApplication4 { class Program { static void Main(string[] args) { try { using (SPSite site = new SPSite("http://mossweb:1111/sites/Publish")) { ServerContext context = ServerContext.GetContext(site); UserProfileManager profileManager = new UserProfileManager(context); Console.WriteLine("All Profiles:"); foreach (UserProfile p in profileManager) { Console.WriteLine("{0} : {1}", p.ID, p.MultiloginAccounts[0]); } Console.WriteLine("—"); string userName = @"eoffice\Administrator"; if (profileManager.UserExists(userName)) { UserProfile profile = profileManager.GetUserProfile(userName); Console.WriteLine("Found User Profile {0}", profile.ID); Console.WriteLine("\tPersonal Site: {0} ({1})", profile.PersonalSite.RootWeb.Title, profile.PersonalSite.Url); } else { Console.WriteLine("No account found for " + userName); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } } |
参考资料:Sams Microsoft SharePoint 2007 Development Unleashed