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