我尝试使用CSOM在我们的内部部署环境中以编程方式启用网站集功能。
我一直收到错误:
Feature with Id '7201d6a4-a5d3-49a1-8c19-19c4bac6e668' is not installed in this farm, and cannot be added to this scope.
我通过GUI检查网站集功能,它就在那里,所以我认为它已经打开(而且它已经是OOTB)。
为什么会这样?
代码:
try
{
if (featureNode.Attributes != null)
{
string guid = featureNode.Attributes["ID"].Value;
string featureName = featureNode.Attributes["FeatureName"].Value;
Guid featureGUID = new Guid(guid);
if (isSiteColl)
{
currentFeatures.Add(featureGUID, false, FeatureDefinitionScope.Site);
currentContext.ExecuteQuery();
}
else
{
currentFeatures.Add(featureGUID, false, FeatureDefinitionScope.None);
currentContext.ExecuteQuery();
}
}
}
答案 0 :(得分:0)
您尝试激活的功能是*元数据导航和过滤功能,对吗?
问题在于这部分代码:
if (isSiteColl)
{
currentFeatures.Add(featureGUID, false, FeatureDefinitionScope.Site);
currentContext.ExecuteQuery();
}
else
{
currentFeatures.Add(featureGUID, false, FeatureDefinitionScope.None);
currentContext.ExecuteQuery();
}
我不知道isSiteColl
的价值是什么,因为它没有在您提供的代码中分配。但对于元数据导航和过滤,FeatureDefinitionScope.Site
和FeatureDefinitionScope.None
都不对。
此枚举表示功能定义的位置,而不是您要安装它的位置。正确的价值观是:
Farm
用于OOB功能以及作为自定义服务器场解决方案的一部分安装的功能。Site
表示将网站导出为模板时生成的沙盒解决方案和功能。这是基于我的经验。我一直在努力解决同样的问题,因为这在MSDN上的记录非常糟糕。我不知道何时应该使用Web
和None
值。