2010-09-16 3 views
5

Ho un problema in cui è possibile abilitare una funzionalità dell'interfaccia utente e tutto funziona come previsto tramite le impostazioni del sito, ma se provo e abilito la funzione tramite il powershell di Sharepoint (che siamo facendo come parte di una distribuzione script), ottengo il seguente:Impossibile abilitare la funzione con ricevitore di funzioni tramite PowerShell

Enable-SPFeature: Impossibile creare oggetto ricevitore dal gruppo "xxxxx, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 967e6960f5af91e6 ", classe" xxxxx.EventReceiver "per funzione" xxxxx.Public.Search "(ID: 026d7c45-a359-4550-822d-1a6 c35e58e0 d) .: System.ArgumentNullException: Il valore non può essere nullo. Nome parametro: tipo

Qualcuno sa perché questo si verificherà o alcune cose che dovrei controllare? La definizione della funzione è sicuramente corretta (dal momento che la distribuzione attraverso l'interfaccia utente funziona come previsto, e ho anche verificato due volte che PublicKeyToken è corretto ecc. Ecc.) E il riavvio dei servizi e iisreset non mi consente di utilizzare Enable-SPFeature.

+0

Ho lo stesso problema. Posso attivare senza errori la funzionalità dall'interfaccia utente web ma non da PowerShell con enable-spfeature. Questo vale anche per tutte le funzionalità con ambito a livello di sito con i nuovi ricevitori di eventi collegati (senza codice all'interno degli eventi) e la destinazione di distribuzione dell'assieme impostata sull'applicazione web. –

risposta

0

Ho avuto questo ieri, si scopre il nome della funzione e il nome del destinatario della funzione werent corrispondenza. Per risolverlo, ho copiato il codice FeatureActivated nel blocco note (intero blocco di codice) o in tutti gli eventi che hai codificato.

  1. Copia l'intero codice evento che hai scritto I.e. the Feature Metodo attivo (inclusa la firma )
  2. Rimuovere EventReceiver dal progetto.
  3. aggiungere un nuovo evento ricevuti al progetto (è possibile doppio controllare il nome di modifiche)
  4. incollare il codice evento nuovo nel ricevitore evento.

Io uso il seguente codice per implementare utilizzando 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

Ho provato questo, e non ha funzionato - Sono abbastanza sicuro che il nome della classe del ricevitore dell'evento sia corretto, dal momento che funziona bene quando si tenta di distribuirlo attraverso l'interfaccia utente ma non solo attraverso Powershell ... –

1

Prova questo: andare al Pannello di controllo, fate clic su "Programmi", cliccare su "Programmi e funzionalità", selezionare "Microsoft SharePoint Server 2010 "(o qualsiasi altra cosa sia stata installata), fare clic su" Cambia ", selezionare" Ripristina "e fare clic su" Continua ". Questo è quello che mi ha aiutato.

0

Non utilizzare il "normale" PowerShell, utilizzare invece SharePoint 2010 Management Shell.

+0

Spiacente, dovrei sono stati più specifici - stavo definitivamente usando Sharepoint PowerShell. –