访问群体对象模型概述
Microsoft Office SharePoint Portal Server 2003 支持以基于符合规则的访问群体为基础的设定。除了基于规则的访问群体之外,Microsoft Office SharePoint Server 2007 还支持基于 SharePoint 组和通讯组列表 (DL) 成员资格的设定。Office SharePoint Server 2007 还可以将内容面向列表项级别,而不仅面向列表级别。
备注
Office SharePoint Server 2007 还提供查找面向特定用户的所有 SharePoint 网站的 Web 服务。有关详细信息,请参阅如何:使用已发布链接 Web 服务。
对访问群体对象模型使用新命名空间
在 SharePoint Portal Server 2003 中使用 Microsoft.SharePoint.Portal.Audience 命名空间与访问群体配合工作。在 Office SharePoint Server 2007 中,访问群体对象模型是在 Microsoft.Office.Server.dll 的 Microsoft.Office.Server.Audience 命名空间中实现的。这个新命名空间为 Office SharePoint Server 2007 中的新功能提供对象模型支持。
为了后向兼容性,Microsoft.SharePoint.Portal.Audience 命名空间仍存在。在 SharePoint Portal Server 2003 中使用 Microsoft.SharePoint.Portal.Audience 命名空间编写的应用程序和工具在 Office SharePoint Server 2007 中应仍能运行。但请注意,它们可能无法如预期的那样运行,尤其是用于新功能时。例如,如果使用 Microsoft.SharePoint.Portal.Audience 中的 API,则只能使用基于规则的访问群体。因此,如果要编写新应用程序或升级旧应用程序,则应使用 Microsoft.Office.Server.dll 中的新 Microsoft.Office.Server.Audience 命名空间。Microsoft.SharePoint.Portal.Audience 命名空间中的所有类均已被弃用,因此每次使用 Microsoft.SharePoint.Portal.Audience 命名空间中的类或方法时都会收到警告。
在 Office SharePoint Server 2007 中获取 AudienceManager 对象
AudienceMananger 对象在访问群体对象模型中是顶级对象。通过使用以下示例代码中显示的语法,可以在 Office SharePoint Server 2007 中获取 AudienceManager 对象。使用此示例之前,请将 servername 替换为实际值并添加任何可能需要的代码。
using (SPSite site = new SPSite("https://servername"))
{
ServerContext context = ServerContext.GetContext(site);
AudienceManager audManager = new AudienceManager(context);
//your code here
}
个性化门户
以下代码示例介绍如何将列表项面向特定访问群体。
AudienceLoader audienceLoader = AudienceLoader.GetAudienceLoader();
foreach (SPListItem listItem in list.Items)
{
// get roles the list item is targeted to
string audienceFieldValue = (string)listItem[k_AudienceColumn];
// quickly check if the user belongs to any of those roles
if (AudienceManager.IsCurrentUserInAudienceOf(audienceLoader, audienceFieldValue,
false))
{
// is a member
}
else
{
// not a member
}
}