我正在尝试从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的问题。
答案 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。