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!

Foi útil?

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:

  1. Crie uma classe que implementa a interface IHttpModule.
  2. 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.
  3. 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.
  4. 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top