Como você pode ligar um recurso SharePoint 2007 para o Application_Start de um site?
-
02-07-2019 - |
Pergunta
Eu queria saber se há uma boa maneira de ligar para o Application_Start de um site do SharePoint 2007, quando o desenvolvimento de um recurso? Eu sei que posso editar diretamente o arquivo global na raiz do site, mas há uma maneira de fazer isso para que ele seja implantado com o recurso?
Obrigado!
Solução
Esta é realmente possível, mas não envolve o arquivo global.
Muitos dos exemplos da Microsoft demonstram código de fiação em via Global.asax, mas isso não a melhores práticas abordagem é quando se trata de SharePoint. Idealmente, seu código deve ficar empacotado como um recurso e implantado via WSP (como você já sabe).
A chave reside na implementação do código em questão como um HttpModule (ou seja, um tipo que implementa a interface IHttpModule) e fiação-lo no pipeline ASP.NET manutenção do seu aplicativo SharePoint. Grosso modo, estes são os passos:
- Crie uma classe que implementa a interface IHttpModule.
- Implementar o método Init em sua HttpModule; isso é chamado quando o HttpApplication (neste caso, o SPHttpApplication) é a instalação, e dá-lhe a oportunidade de realizar o processamento, os delegados do evento fio-up para outros eventos de dutos, etc.
- Criar um SPFeatureReceiver que irá adicionar e remover seu HttpModule de arquivos web.config alvo na ativação e desativação, respectivamente. Isto é realizado usando o tipo SPWebConfigModification para atualizar o
nó em arquivos web.config alvo. - Pacote todos como um recurso e implantar via WSP.
Para mais informações sobre HttpModule desenvolvimento, consulte http://msdn.microsoft .com / en-us / library / ms227673.aspx . Para alguns detalhes adicionais sobre o tipo SPWebConfigModification, consulte http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx .
Resultado: uma classe que pode lidar com a inicialização do aplicativo e pode ser implantado através de recurso. No arquivo do manual hacking necessário.
Eu usei com sucesso esta em um número de cenários -., Mais recentemente, com um provedor de cache personalizado (IVaryByCustomHandler) que precisava para se registrar para retornos de chamada com o SPHttpApplication quando começou
Apesar de sua pergunta é um pouco mais velho, eu espero que isso ajude!
Outras dicas
Meu pressentimento sobre isso é que não vai ser possível. Application_Start é chamado pelo tempo de execução como o motor asp.net está a iniciar, assim, há muito provavelmente não pode ser qualquer forma de gancho exterior manipulador de modificar o Global.asax - v.g. o gancho deve ser declarativa e persistente como tem que sobreviver à parada application / descarga. Então, se você tem que escrever ao global.asax, eu acho que você poderia escrever uma EventReceiver recurso para executar a modificação.
Isso de lado, você pode dar mais detalhes sobre o porquê? Talvez existem outros ângulos de ataque. A ideia de modificar o global.asax na mosca faz-me sentir doente. Isso não pode ser bom.
Oisin