C# 从SharePoint 2010获取场功能

C# 从SharePoint 2010获取场功能,c#,sharepoint,sharepoint-2010,C#,Sharepoint,Sharepoint 2010,我正在尝试从SharePoint 2010管理中心网站获取服务器场功能的列表。我遇到的问题是,我只成功地收回了站点的功能。以下代码是我目前正在使用的代码: foreach (SPFeature feature in SPAdministrationWebApplication.Local.Features) { string featureName = feature.Definition.DisplayName; if (featureName != null) {

我正在尝试从SharePoint 2010管理中心网站获取服务器场功能的列表。我遇到的问题是,我只成功地收回了站点的功能。以下代码是我目前正在使用的代码:

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的问题。

我认为第二个示例是正确的。缺少的部分是检查特征范围。SPFarm.Local.FeatureDefinitions正在带回场中定义的所有要素的集合(SPFeatureDefinition对象的集合)。从那里,您可以检查SPFeatureDefinition对象的Scope属性,将其缩小到仅农场范围的功能

例如:

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参考。

我已编辑了您的标题。请看,“,其中的共识是“不,他们不应该”。对不起,我通常是这样开始谷歌查询的。非故意违反不是问题。为您将第一个标记放入标题中。啊,是的,我完全忘记查看范围设置。谢谢你的建议/例子。我要开始玩这个了!望远镜确实是答案!它不喜欢
features.Scope=“Farm”
,而是在if之前声明一个作用域,然后进行比较:
features.Scope.Equals(scopeSelect)
。谢谢你的帮助。很抱歉我的语法错误。我在反复检查时使用了PowerShell脚本。该脚本如下所示:$farm=get-spfarm;foreach($farm.FeatureDefinitions中的feature){if($feature.Scope-eq“farm”){write host$feature.name$feature.FeatureDefinitionScope}}很高兴这对您有用!没问题!它让我不再只是复制/粘贴,我学到了更多。