我正在为SharePoint 2010 SP1开发解决方案。我的解决方案提供了几个计时器作业,使用功能和功能接收器进行实例化。
该功能的作用域是WebApplication,这似乎很自然,因为计时器作业与同一个Web应用程序相关联。该解决方案也是一个完全信任的解决方案。
该解决方案部署到特定的Web应用程序(http://portal.xyz.net),并且仅部署到该Web应用程序;但是,除了管理中心之外,该服务器中的所有 Web应用程序似乎都会激活该功能。因此,计时器作业将在所有Web应用程序上创建。
这会导致某些情况下的失败,以及其他情况下的冗余代码执行。我真正想要的是该功能在我部署解决方案的Web应用程序上激活 。
关于如何正确配置这一点的任何想法?
我们尝试过三种方式部署解决方案,所有方式都具有相同的行为:
使用以下PowerShell命令:
Add-SPSolution -LiteralPath C:\ Nu.SharePoint.Portal.wsp Install-SPSolution -Identity Nu.SharePoint.Portal.wsp -GACDeployment -WebApplication http://portal
在任何情况下,在部署步骤之后,我们会看到部署到单个Web应用程序的解决方案,但是除了中央管理员之外,所有Web应用程序都会激活WebApplication范围的功能。我们想要的行为是在我们部署到的应用程序上激活仅这些功能。
答案 0 :(得分:2)
如果要阻止计时器作业在所有Web应用程序上激活,您只需将名为“Activate On Default”的Feature属性设置为False。将功能部署到Web应用程序时,该功能将不会激活,因此您只需通过Central Admin或PowerShell脚本激活该功能。 您可以通过打开“特征设计器”来修改Visual Studio中的“特征”属性,选择左侧的特征,它是“属性”窗口中的第一个属性。
答案 1 :(得分:1)
答案 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