从SharePoint 2010获取场功能

时间:2012-10-11 15:19:16

标签: c# sharepoint sharepoint-2010

我正在尝试从SharePoint 2010 Central Admin站点获取Farm功能列表。我遇到的问题是我只是成功撤回了网站功能。以下代码是我目前正在使用的代码:

foreach (SPFeature feature in SPAdministrationWebApplication.Local.Features)
{
    string featureName = feature.Definition.DisplayName;
    if (featureName != null)
    {
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    }

}

我还尝试使用SPFarm.Local.FeatureDefinitions,如下所示:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)
{
    string featureName = feature.DisplayName;
if (featureName != null)
    {
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    }

但无济于事。我接下来的下一个途径是使用SPFeatureCollection。我可以采取更好的方法解决这个问题吗?基本上我只是在寻找一些线索,因为我还没有从SPFeatureCollection中得到任何东西。

修改

我一直在搞乱
SPFeatureCollection featureCollect = SPContext.Current.Site.Features  

但到目前为止,我遇到了SPContext返回null的问题。

1 个答案:

答案 0 :(得分:2)

我认为你在第二个例子中走在正确的轨道上。您缺少的部分是检查功能范围。 SPFarm.Local.FeatureDefinitions将返回服务器场中定义的所有功能的集合(SPFeatureDefinition对象的集合)。从那里,您可以检查SPFeatureDefinition对象的Scope属性,将其缩小到Farm scoped功能。

示例:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)
{
    if (feature.Scope = "Farm")
    {
        string featureName = feature.DisplayName;
        if (featureName != null)
        {
            XElement newItem = new XElement("Item", featureName);
            infoTree.Add(newItem);
        }
    }

SPFeatureDefinition对象的可用属性的附加MSDN参考here