如果我在服务器场级别部署解决方案,是否有办法阻止各种网站集的所有者激活该解决方案中的功能?
答案 0 :(得分:3)
阻止网站集用户激活某个功能的一种简单方法是将其标记为隐藏。这些功能实际上只允许服务器场管理员通过STSADM命令激活。
要隐藏功能,请将Feature元素的Hidden属性更新为“TRUE”,如下所示:
<Feature
Id="AD2146D-62DA-4911-DBC1-AE177DE40084"
Title="Restricted Web Parts"
Hidden="TRUE"
.../>
或者,如果您使用的是SharePoint 2010,则可以使用功能包通过将一组功能定位到特定用户集来解决此问题。
答案 1 :(得分:1)
答案 2 :(得分:0)
如果在功能激活期间发生错误,它将不会激活该功能,并将收回可能已作为Elements Manifest的一部分部署的任何效果。
因此,通过狡猾的使用,您可以使用功能接收器的FeatureActivated部分来检查谁正在激活它,并抛出一个UnauthorizedAccessException,并带有相应的错误消息,详细说明无法激活该功能的原因。这将显示为标准的SharePoint错误页面,其中包含您指定的消息。如果您在功能上已经有功能接收器,则需要在FeatureActivated部分的开头附加此功能,以便不会发生任何编程操作(与元素清单不同,这些不会因激活失败而收回)。
如果您之前没有使用过功能接收器,则只需要两个部分即可建立它。
在功能的功能XML中,将以下两个属性添加到功能节点。
ReceiverAssembly=(four-part-assembly-string)
ReceiverClass=(full namespace.class name of receiver class)
写一个接收器类。这继承自SPFeatureReceiver
,在FeatureActivated
,FeatureDeactivating
,FeatureInstalled
和FeatureUninstalling
中有4个必需的覆盖。您不必为过去3做任何事情。您将使用FeatureActivated
方法编写安全检查。