如何将SharePoint 2007功能连接到网站的应用程序开始?

如何将SharePoint 2007功能连接到网站的应用程序开始?,sharepoint,sharepoint-2007,global-asax,application-start,Sharepoint,Sharepoint 2007,Global Asax,Application Start,我想知道在开发一项功能时,是否有一种很好的方法连接到SharePoint 2007站点的应用程序开始?我知道我可以在站点根目录中直接编辑Global.asax文件,但是有没有办法这样做,以便使用该功能进行部署 谢谢 我的直觉是这是不可能的。asp.net引擎启动时,运行时会调用Application_Start,因此除了修改Global.asax外,很可能没有任何方法可以钩住处理程序-例如,钩子必须是声明性和持久性的,因为它必须在应用程序停止/卸载后继续存在。因此,如果您必须写入global.a

我想知道在开发一项功能时,是否有一种很好的方法连接到SharePoint 2007站点的应用程序开始?我知道我可以在站点根目录中直接编辑Global.asax文件,但是有没有办法这样做,以便使用该功能进行部署


谢谢

我的直觉是这是不可能的。asp.net引擎启动时,运行时会调用Application_Start,因此除了修改Global.asax外,很可能没有任何方法可以钩住处理程序-例如,钩子必须是声明性和持久性的,因为它必须在应用程序停止/卸载后继续存在。因此,如果您必须写入global.asax,我想您可以编写一个FeatureEventReceiver来执行修改

除此之外,你能提供更多关于为什么的细节吗?也许还有其他的攻击角度。动态修改global.asax的想法让我感觉不舒服。那可不好


Oisin实际上是可能的,但它不涉及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开发的更多信息,请参阅。有关SPWebConfigModification类型的更多详细信息,请参阅

    结果:一个可以处理应用程序启动的类,并且可以通过Feature部署。无需手动文件黑客攻击

    我已经在许多场景中成功地使用了它——最近一次是在一个自定义缓存提供程序(IVaryByCustomHandler)中使用的,该提供程序需要在启动sphttpap应用程序时为回调注册自己

    虽然你的问题有点老,但我希望这能有所帮助