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.Site
或FeatureDefinitionScope.Farm
这基本上意味着方法FeatureCollection.Add
不接受featdefScope
的FeatureDefinitionScope.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
也适用于激活网站集功能。
添加功能的方式(沙盒、场解决方案(无关紧要。