我想知道在开发功能时是否有一种很好的方法可以挂钩到SharePoint 2007网站的Application_Start?我知道我可以直接编辑站点根目录中的Global.asax文件,但有没有办法实现这一点,以便部署该功能?
谢谢!
答案 0 :(得分:13)
这实际上是可行的,但它不涉及Global.asax文件。
Microsoft的许多示例通过Global.asax演示了接线代码,但在SharePoint方面,这不是最佳实践方法。理想情况下,您的代码应作为功能打包并通过WSP进行部署(如您所知)。
关键在于将有问题的代码实现为HttpModule(即实现IHttpModule接口的类型)并将其连接到为SharePoint应用程序提供服务的ASP.NET管道中。粗略地说,这些是步骤:
有关HttpModule开发的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms227673.aspx。有关SPWebConfigModification类型的一些其他详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx。
结果:一个可以处理应用程序启动并可通过Feature部署的类。无需手动文件黑客攻击。
我已经在很多场景中成功使用了它 - 最近有一个自定义缓存提供程序(IVaryByCustomHandler),它需要在启动时使用SPHttpApplication注册自己的回调。
虽然你的问题有点老了,但我希望这会有所帮助!
答案 1 :(得分:3)
我对此的直觉是,这是不可能的。当asp.net引擎启动时,运行时调用Application_Start,因此很可能无法以任何方式挂钩修改Global.asax之外的处理程序 - 例如钩子必须是声明性的和持久的,因为它必须在应用程序停止/卸载时存活。所以,如果你必须写入global.asax,我想你可以编写一个Feature EventReceiver来执行修改。
除此之外,你能否详细说明原因?也许还有其他攻击角度。在飞行中修改global.asax的想法让我感到恶心。这不可能是好事。
[287]莪