我想知道在开发功能时是否有一种很好的方法可以挂钩到SharePoint 2007网站的Application_Start?我知道我可以直接编辑站点根目录中的Global.asax文件,但有没有办法实现这一点,以便它与该功能一起部署?
谢谢!
这实际上是可行的,但它不涉及Global.asax文件.
Microsoft的许多示例通过Global.asax演示了接线代码,但在SharePoint方面,这不是最佳实践方法.理想情况下,您的代码应作为功能打包并通过WSP进行部署(如您所知).
关键在于将有问题的代码实现为HttpModule(即实现IHttpModule接口的类型)并将其连接到为SharePoint应用程序提供服务的ASP.NET管道中.粗略地说,这些是以下步骤:
创建一个实现IHttpModule接口的类.
在HttpModule中实现Init方法; 在设置HttpApplication(在本例中为SPHttpApplication)时调用它,它为您提供了为其他管道事件执行处理,连接事件委托等的机会.
创建一个SPFeatureReceiver,它将分别在激活和停用时从目标web.config文件添加和删除HttpModule.这是使用SPWebConfigModification类型执行的,以更新目标web.config文件中的
将所有功能打包为功能并通过WSP进行部署.
有关HttpModule开发的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms227673.aspx.有关SPWebConfigModification类型的其他详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx.
结果:可以处理应用程序启动并可通过功能部署的类.无需手动文件黑客攻击.
我已成功地在许多场景中使用它 - 最近有一个自定义缓存提供程序(IVaryByCustomHandler),它需要在启动时使用SPHttpApplication注册自身以进行回调.
虽然你的问题有点老了,但我希望这会有所帮助!