Pregunta

Me preguntaba si existe una buena manera de conectarse a Application_Start de un sitio de SharePoint 2007 al desarrollar una función.Sé que puedo editar directamente el archivo Global.asax en la raíz del sitio, pero ¿hay alguna manera de hacerlo para que se implemente con la función?

¡Gracias!

¿Fue útil?

Solución

En realidad, esto es posible, pero no involucra el archivo Global.asax.

Muchos de los ejemplos de Microsoft demuestran cómo conectar el código a través de Global.asax, pero este no es un enfoque de mejores prácticas cuando se trata de SharePoint.Idealmente, su código debería empaquetarse como una característica e implementarse a través de WSP (como ya sabe).

La clave radica en implementar el código en cuestión como un HttpModule (es decir, un tipo que implementa la interfaz IHttpModule) y conectarlo a la canalización ASP.NET que da servicio a su aplicación SharePoint.A grandes rasgos, estos son los pasos:

  1. Cree una clase que implemente la interfaz IHttpModule.
  2. Implemente el método Init en su HttpModule;esto se llama cuando se configura HttpApplication (en este caso, SPHttpApplication) y le brinda la oportunidad de realizar procesamiento, conectar delegados de eventos para otros eventos de canalización, etc.
  3. Cree un SPFeatureReceiver que agregará y eliminará su HttpModule de los archivos web.config de destino durante la activación y desactivación, respectivamente.Esto se lleva a cabo utilizando el tipo SPWebConfigModification para actualizar el nodo <httpModules> en los archivos web.config de destino.
  4. Empaquete todo como una característica e impleméntelo a través de WSP.

Para obtener más información sobre el desarrollo de HttpModule, consulte http://msdn.microsoft.com/en-us/library/ms227673.aspx.Para obtener detalles adicionales sobre el tipo SPWebConfigModification, consulte http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx.

Resultado:una clase que puede manejar el inicio de la aplicación y se puede implementar a través de Feature.No es necesario piratear archivos manualmente.

He usado esto con éxito en varios escenarios, más recientemente con un proveedor de almacenamiento en caché personalizado (IVaryByCustomHandler) que necesitaba registrarse para las devoluciones de llamadas con SPHttpApplication cuando se inició.

Aunque tu pregunta es un poco más antigua, ¡espero que esto ayude!

Otros consejos

Mi intuición al respecto es que no será posible.El tiempo de ejecución llama a Application_Start cuando el motor asp.net se está iniciando, por lo que lo más probable es que no haya ninguna forma de conectar el controlador fuera de modificar Global.asax, por ejemplo.el gancho debe ser declarativo y persistente, ya que tiene que sobrevivir a la detención/descarga de la aplicación.Entonces, si tiene que escribir en global.asax, supongo que podría escribir un Feature EventReceiver para realizar la modificación.

Aparte de eso, ¿puedes dar más detalles sobre el por qué?Quizás haya otros ángulos de ataque.La idea de modificar global.asax sobre la marcha me hace sentir mal.Eso no puede ser bueno.

Oisín

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top