Невозможно включить функцию с приемником функций через PowerShell
У меня есть проблема, когда я могу включить функцию с пользовательским интерфейсом, и все работает как положено через настройки сайта, но если я пытаюсь включить функцию через PowerPoint PowerShell (что мы делаем как часть развертывания по сценарию), я получаю следующие:
Enable-SPFeature: не удалось создать объект-получатель из сборки "xxxxx, версия =1.0.0.0, Culture= нейтральный, PublicKeyToken=967e6960f5af91e6 ", класс "xxxxx.EventReceiver" для функции "xxxxx.Public.Search" (ID: 026d7c45-a359) -4550-822d-1a6c35e58e0 d).: System.ArgumentNullException: значение не может быть нулевым. Имя параметра: тип
Кто-нибудь знает, почему это произойдет, или некоторые вещи, которые я должен проверить? Определение функции определенно верно (поскольку развертывание через пользовательский интерфейс работает, как и ожидалось, и я также дважды проверил правильность PublicKeyToken и т. Д. И т. Д.), И перезапуск служб и iisreset также не позволяют мне использовать Enable-SPFeature.
5 ответов
У меня такая же проблема. Любопытно, что когда вы открываете новое окно PowerShell SP2010 и снова вводите ту же команду, сборка будет найдена без проблем. Смотрите: http://khurramdotnet.blogspot.com/2011/01/enable-spfeature-command-throwing.html
Попробуйте это: http://geoffwebbercross.blogspot.ca/2011/06/failed-to-create-receiver-object-from.html Это сработало для меня, мне не пришлось менять стежок в моем коде / решении
Попробуйте это: перейдите в Панель управления, нажмите "Программы", нажмите "Программы и компоненты", выберите "Microsoft SharePoint Server 2010" (или все, что у вас установлено), нажмите "Изменить", выберите "Восстановить" и нажмите " Продолжить". Это то, что помогло мне.
Не используйте "обычный" PowerShell, вместо этого используйте Командная консоль SharePoint 2010.
У меня было это вчера, получается, что имя функции и имя получателя функции не совпадают. Чтобы решить эту проблему, я скопировал код FeatureActivation в блокнот (весь блок кода) или в любое другое событие, которое вы кодировали.
- Скопируйте весь код события, который вы написали, т.е. метод FeatureActivation (включая подпись).
- Удалите EventReceiver из вашего проекта.
- Добавить новое событие, полученное в ваш проект (вы можете дважды проверить имя на наличие изменений)
- Вставьте код события обратно в приемник событий.
Я использую следующий код для развертывания с помощью 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
}