2
            Guid featureId = new Guid("0af5989a-3aea-4519-8ab0-85d91abe39ff");

            ClientContext clientContext = new ClientContext("http://mysite:786/");

            Site clientSite = clientContext.Site;
            clientContext.Load(clientSite);

            FeatureCollection clientSiteFeatures = clientSite.Features;
            clientContext.Load(clientSiteFeatures);
            clientContext.ExecuteQuery();

            // Activate the feature
            clientSite.Features.Add(featureId, true, FeatureDefinitionScope.Site);
            //clientSiteFeatures.Remove(featureId, false); 
            clientContext.ExecuteQuery();
            MessageBox.Show("Success");

当我运行此代码时,出现异常:ID 为“0af5989a-3aea-4519-8ab0-85d91abe39ff”的功能未安装在农场中,无法添加到范围。

我从链接http://social.technet.microsoft.com/wiki/contents/articles/7695.list-of-sharepoint-2010-features-id-displayname-and-scopes.aspx获得了这个功能 ID

请指导。

问候,维克兰特·拉吉·贝哈尔

4

4 回答 4

4
FeatureDefinitionScope.None

这为我激活了一个网络范围的功能。

于 2014-07-15T01:57:45.367 回答
2

根据MSDN,该FeatureCollection.Add 方法具有以下签名

public Feature Add(
    Guid featureId,
    bool force,
    FeatureDefinitionScope featdefScope
) 

用于将功能添加到激活功能的集合并返回添加的功能

参数FeatureDefinitionScope 用于指定特征定义的特征范围。同时文档说:

它的值必须为FeatureDefinitionScope.SiteFeatureDefinitionScope.Farm

这基本上意味着该方法FeatureCollection.Add不接受FeatureDefinitionScope.WebfeatdefScope ,因此不支持 使用Web 范围激活功能。

在您的情况下,您似乎正在尝试通过 CSOM 激活不支持范围的功能(例如 Web)


如何验证功能范围

$feature = get-spfeature featureId
if ($feature -eq $null -or $feature -eq "") {
    echo "no feature found with id"
} else {
  echo ("feature found. Scope is  " + $feature.Scope)
}
于 2013-12-11T19:28:44.367 回答
0
FeatureDefinitionScope.None

也适用于激活网站集功能。

添加功能的方式(沙盒、农场解决方案)无关紧要。

于 2014-09-02T10:38:54.620 回答
0

为了使用客户端对象模型激活功能,必须使用沙盒解决方案进行部署。通过农场解决方案部署的功能无法通过客户端对象模型激活

于 2013-10-05T13:45:00.157 回答