无法在 SharePoint 2010 中使用 COM 激活功能


            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

请指导。

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

FeatureDefinitionScope.None

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

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

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

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

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

它的值必须为 FeatureDefinitionScope.SiteFeatureDefinitionScope.Farm

这基本上意味着方法FeatureCollection.Add不接受featdefScopeFeatureDefinitionScope.Web值,因此不支持使用 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)
}

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

FeatureDefinitionScope.None

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

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

相关内容

  • 没有找到相关文章

最新更新