【发布时间】:2010-05-28 11:45:17
【问题描述】:
如果我在服务器场级别部署解决方案,是否有办法阻止各种网站集的所有者激活该解决方案中的功能?
【问题讨论】:
标签: sharepoint deployment solution
如果我在服务器场级别部署解决方案,是否有办法阻止各种网站集的所有者激活该解决方案中的功能?
【问题讨论】:
标签: sharepoint deployment solution
防止网站集用户激活某个功能的一种简单方法是将其标记为隐藏。然后,这些功能实际上只允许场管理员通过 STSADM 命令激活。
要隐藏功能,请将 Feature 元素的 Hidden 属性更新为“TRUE”,如下所示:
<Feature
Id="AD2146D-62DA-4911-DBC1-AE177DE40084"
Title="Restricted Web Parts"
Hidden="TRUE"
.../>
或者,如果您使用的是 SharePoint 2010,您可以使用功能包通过将一组功能定位到一组特定用户来解决此问题。
【讨论】:
【讨论】:
如果在功能激活过程中发生错误,它将不会激活该功能,并将收回任何可能已作为元素清单的一部分部署的效果。
因此,通过巧妙地使用它,您可以使用功能接收器的 FeatureActivated 部分来检查谁在激活它,并抛出 UnauthorizedAccessException 并带有适当的错误消息,详细说明无法激活该功能的原因。这将显示为带有您指定消息的标准 SharePoint 错误页面。如果您在该功能上已经有一个功能接收器,则需要在 FeatureActivated 部分的开头附加它,这样就不会发生任何编程操作(与元素清单不同,这些不会在激活不成功时收回)。
如果你之前没有使用过Feature Receiver,你只需要两部分来建立它。
在您的特征的特征 XML 中,将以下两个属性添加到 Feature 节点。
ReceiverAssembly=(four-part-assembly-string)
ReceiverClass=(full namespace.class name of receiver class)
编写一个接收器类。这继承自 SPFeatureReceiver,并在 FeatureActivated、FeatureDeactivating、FeatureInstalled 和 FeatureUninstalling 中有 4 个必需的覆盖。最后 3 步您无需执行任何操作。您将在 FeatureActivated 方法中编写安全检查。
【讨论】: