2010-09-16 87 views
5

我遇到了一个问题,我可以通过网站设置启用UI功能并按预期工作,但如果我尝试通过Sharepoint powershell启用该功能(我们做一个脚本化部署的一部分),我得到如下:无法通过PowerShell启用功能接收器功能

启用-SPFeature:无法创建组件“XXXXX 接收对象, 版本= 1.0.0.0,文化=中立, 公钥= 967e6960f5af91e6 “, class”xxxxx.EventReceiver“for feature”xxxxx.Public.Search“(ID: 026d7c45-a359-4550-822d-1a6 c):System.ArgumentNullException: 值不能为空。参数名称: 类型

有没有人知道为什么会出现这种情况,或者我应该检查一些事情?功能定义是绝对正确的(因为通过UI部署它可以按预期工作,而且我还检查了PublicKeyToken是否正确等)等等,并重新启动服务,并且iisreset也不支持我使用Enable-SPFeature。

+0

我有同样的问题,以改变针。我可以毫无错误地激活Web UI的功能,但不能从PowerShell启用enable-spfeature。对于站点级别的所有功能,新的附加事件接收器(事件内部没有任何代码)和程序集部署目标设置为Web应用程序也是如此。 – 2010-11-04 10:03:20

回答

0

我昨天有这个,原来的功能名称和功能接收器名称werent匹配。为了解决这个问题,我将FeatureActivated代码复制到记事本(整个代码块)或者它已经编码的任何事件中。

  1. 复制您写入的整个事件代码I.e. FeatureActivated方法(包括 签名)
  2. 从项目中删除EventReceiver 。
  3. 添加新的事件接收到您的项目 (你可以 双更改检查名称)
  4. 事件代码粘贴回 事件接收器。

我用下面的代码使用PowerShell

if(($Solution -ne $null) -and ($Solution.ContainsWebApplicationResource)) 
    { 
     if ($FeatureScope -eq "Web") 
     { 
      Install-SPSolution $SolutionName -url $siteUrl -GACDeployment -Confirm:$false 
     } 
     else 
     { 
      Install-SPSolution $SolutionName -AllWebApplications -GACDeployment -Confirm:$false 
     } 
    } 
    else 
    { 
     Install-SPSolution $SolutionName -GACDeployment -Confirm:$false 
    } 
    while($Solution.Deployed-eq$false) 
    { 
     Start-Sleep 2 
     Write-Host "." -NoNewline 
    } 
+0

我试过这个,但它不工作 - 我很确定事件接收器的类名是正确的,因为它试图通过用户界面部署它时工作正常,但没有通过Powershell ... – 2010-09-16 23:48:39

1

部署试试这个:进入控制面板,点击“程序”,点击“程序和功能”,选择“Microsoft SharePoint服务器2010“(或者你安装的任何东西),点击”更改“,选择”修复“并点击”继续“。这是对我的帮助。

0

请勿使用“普通”PowerShell,而应使用SharePoint 2010 Management Shell。

+0

对不起,我应该更具体 - 我绝对使用Sharepoint Powershell。 – 2011-03-23 03:19:44