Falha ao carregar o conjunto do receptor, faltando reciclagem de serviço?
-
10-12-2019 - |
Pergunta
Estou ativando um recurso usando o PowerShell e de vez em quando ele falha com o erro "Falha ao carregar o assembly do receptor".Parece estar reclamando porque algum serviço ou aplicativo não consegue encontrar a dll no GAC, porém eu verifiquei todas as vezes e a dll está sempre implantada corretamente no GAC.Meu script do PowerShell é executado assim:
- Desinstale todos os WSPS relevantes (removendo do GAC)
- Reiniciar:SPAdminV4, SPTimerV4, SPUserCodeV4 e IISReset
- Instale todos os WSPS relevantes, incluindo aquele que deve ser o destino do receptor de eventos.
- Reiniciar:SPAdminV4, SPTimerV4, SPUserCodeV4 e IISReset
- Ative o recurso (escopo do aplicativo da web)
Tentei pausar o script entre as etapas 3 e 4 e entre as etapas 4 e 5 para verificar se a DLL está presente e sempre está.Verifiquei se o recurso xml ReceiverAssembly está correto, mas não acho que esse seja o problema, pois funciona na maioria das vezes.
Consigo executar o script várias vezes com êxito e de repente ele falha.Existe algum serviço que preciso reciclar além de um iisreset?
Editar detalhes adicionais:
- Existem 10 wsps, um dos quais contém um recurso com escopo de aplicativo da web.
- Não espero muito tempo após a redefinição, pois pensei que a reciclagem estava concluída quando o iisreset retornou.
- O erro ocorre quando o sharepoint tenta chamar o receptor de evento FeatureActivated personalizado em um dos wsps.
- Rastreamento de pilha parcial (abreviado):System.ArgumentException:Falha ao carregar o assembly do receptor [assinatura completa do assembly do receptor] ou uma de suas dependências.O sistema não pode encontrar o arquivo especificado.System.IO.FileNotFoundException:Não foi possível carregar o arquivo ou assembly [assinatura completa do assembly do receptor]
editar:Adicionadas etapas de reciclagem de serviço.
(Não consigo postar o código exato porque o sistema está em uma rede restrita)
Solução 2
Eu resolvi o problema.Parece que não há necessidade de eu redefinir o IIS ou SPADMINV4 durante a implantação.Removendo todas as referências a isso do meu Script PowerShell resolveu o problema.
Também devo observar que espera 5 segundos após redefinir spadminv4 antes de ativar o recurso também evitar o erro.
Outras dicas
Muitas vezes, isso ocorre porque o SPTimerV4 mantém uma referência em cache para sua solução .dll:s
tente fazer
net stop SPTimerV4
net start SPTimerV4
no PowerShell ou cmd quando você retraiu seu .wsp antes de reinstalá-los