如何使SharePoint 2010 Web应用程序范围的功能仅在一个Web应用程序上激活

时间:2012-01-10 21:11:34

标签: c# asp.net sharepoint-2010

我正在为SharePoint 2010 SP1开发解决方案。我的解决方案提供了几个计时器作业,使用功能和功能接收器进行实例化。

该功能的作用域是WebApplication,这似乎很自然,因为计时器作业与同一个Web应用程序相关联。该解决方案也是一个完全信任的解决方案。

该解决方案部署到特定的Web应用程序(http://portal.xyz.net),并且仅部署到该Web应用程序;但是,除了管理中心之外,该服务器中的所有 Web应用程序似乎都会激活该功能。因此,计时器作业将在所有Web应用程序上创建。

这会导致某些情况下的失败,以及其他情况下的冗余代码执行。我真正想要的是该功能在我部署解决方案的Web应用程序上激活

关于如何正确配置这一点的任何想法?

更新1

我们尝试过三种方式部署解决方案,所有方式都具有相同的行为:

  • 使用Visual Studio
  • 使用管理中心Web应用程序
  • 使用以下PowerShell命令:

    Add-SPSolution -LiteralPath C:\ Nu.SharePoint.Portal.wsp Install-SPSolution -Identity Nu.SharePoint.Portal.wsp -GACDeployment -WebApplication http://portal

在任何情况下,在部署步骤之后,我们会看到部署到单个Web应用程序的解决方案,但是除了中央管理员之外,所有Web应用程序都会激活WebApplication范围的功能。我们想要的行为是在我们部署到的应用程序上激活这些功能。

3 个答案:

答案 0 :(得分:2)

如果要阻止计时器作业在所有Web应用程序上激活,您只需将名为“Activate On Default”的Feature属性设置为False。将功能部署到Web应用程序时,该功能将不会激活,因此您只需通过Central Admin或PowerShell脚本激活该功能。 您可以通过打开“特征设计器”来修改Visual Studio中的“特征”属性,选择左侧的特征,它是“属性”窗口中的第一个属性。

答案 1 :(得分:1)

  1. 转到功能并提供F4
  2. 在“属性”窗口中,在“默认属性上激活”中选择“False”。
  3. 然后部署解决方案。

答案 2 :(得分:0)

您是使用PowerShell部署WSP还是从Visual Studio中部署?通过使用适用于SharePoint的PowerShell命令行开关,您可以轻松配置要部署功能的位置。

Add-PSSnapIn Microsoft.SharePoint.Powershell
Add-SPSolution -LiteralPath C:\install\MyWSP.wsp
Deploy-SPSolution -Identity MyWSP.wsp -GACDeployment -WebApplication http://mysite

从CA手动部署WSP时,您还可以选择将部署到您的功能的WebApplication。

默认情况下,您的功能部署到您的服务器场中的所有WebApp