2010-09-16 13 views
5

Tengo un problema donde puedo habilitar una característica de la interfaz de usuario y todo funciona como se espera a través de la configuración del sitio, pero si intento habilitar la función a través de SharePoint PowerShell (que somos haciendo como parte de una implementación mediante scripts), me sale el siguiente:No se puede habilitar la característica con el receptor de funciones a través de PowerShell

Enable-SPFeature: No se pudo crear objeto receptor del conjunto "xxxxx, versión = 1.0.0.0, Culture = neutral, PublicKeyToken = 967e6960f5af91e6 ", clase" xxxxx.EventReceiver "para función" xxxxx.Public.Search "(ID: 026d7c45-a359-4550-822d-1a6 c35e58e0 d) .: System.ArgumentNullException: El valor no puede ser nulo. Nombre del parámetro: tipo

¿Alguien sabe por qué esto ocurriría, o algunas cosas que debo comprobar? La definición de la característica es definitivamente correcta (ya que implementarla a través de la IU funciona como se esperaba, y también he verificado que PublicKeyToken es correcta, etc.) y reiniciar los servicios, y iisreset tampoco me permite usar Enable-SPFeature.

+0

tengo el mismo problema. Puedo activar sin errores la característica de la interfaz de usuario web pero no de PowerShell con enable-spfeature. Esto también es cierto para todas las características con alcance en el nivel del sitio con los nuevos receptores de eventos adjuntos (sin ningún código dentro de los eventos) y el objetivo de implementación del ensamblaje configurado para la aplicación de Internet. –

Respuesta

0

Tuve esto ayer, resulta que el nombre de la función y el nombre del receptor de la función no coinciden. Para resolverlo, copié el código FeatureActivated en el Bloc de notas (bloque de código completo) o cualquiera de los eventos que haya codificado.

  1. Copie el código del evento completo que ha escrito, es decir. el método FeatureActivated (incluida la firma )
  2. Elimine el EventReceiver de su proyecto.
  3. Añadir un nuevo evento recibieron a su proyecto (se puede vuelva a revisar el nombre para cambios)
  4. Pegar el código de evento en el receptor del evento.

uso el siguiente código para implementar el uso de 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

Intenté esto y no funcionó. Estoy bastante seguro de que el nombre de la clase del receptor del evento es correcto, ya que funciona bien al intentar implementarlo a través de la interfaz de usuario, pero no a través de Powershell ... –

1

Prueba esto: ir al Panel de control, haga clic en "Programas", haga clic en "Programas y características", seleccione "Microsoft SharePoint Server 2010 "(o lo que sea que haya instalado), haga clic en" Cambiar ", seleccione" Reparar "y haga clic en" Continuar ". Esto es lo que me ayudó.

0

No utilice el PowerShell "normal", use el Shell de administración de SharePoint 2010 en su lugar.

+0

Lo siento, debería han sido más específicos: definitivamente estaba usando Sharepoint Powershell. –

Cuestiones relacionadas