我想知道如果有一个很好的方式挂钩到Application_Start SharePoint2007站点开发一种功能?我知道我可以直接编辑的全球性的。asax文件在网站的根源,但是没有一种方法来这样做,它得到部署用的功能?

谢谢!

有帮助吗?

解决方案

这实际上是可行的,但它不涉及Global.asax文件。

Microsoft的许多示例通过Global.asax演示了接线代码,但在SharePoint方面,这不是最佳实践方法。理想情况下,您的代码应作为功能打包并通过WSP进行部署(如您所知)。

关键在于将有问题的代码实现为HttpModule(即实现IHttpModule接口的类型)并将其连接到为SharePoint应用程序提供服务的ASP.NET管道中。粗略地说,这些是步骤:

  1. 创建一个实现IHttpModule接口的类。
  2. 在HttpModule中实现Init方法;这是在设置HttpApplication(在本例中为SPHttpApplication)时调用的,它为您提供了为其他管道事件执行处理,连接事件委托等的机会。
  3. 创建一个SPFeatureReceiver,它将分别在激活和停用时从目标web.config文件添加和删除HttpModule。这是使用SPWebConfigModification类型来更新<!> lt; httpModules <!> gt;目标web.config文件中的节点。
  4. 将所有功能打包为功能并通过WSP进行部署。
  5. 有关HttpModule开发的更多信息,请参阅 http://msdn.microsoft .COM / EN-US /库/ ms227673.aspx 。有关SPWebConfigModification类型的其他详细信息,请参阅 http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx

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

    我已经在很多场景中成功使用了它 - 最近有一个自定义缓存提供程序(IVaryByCustomHandler),它需要在启动时使用SPHttpApplication注册自己的回调。

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

其他提示

我的肠道感觉这是不可能的。Application_Start是由运行时间为asp.net 引擎正在启动,所以很可能不能以任何方式挂钩的处理程序之外的修改全球性的。asax-例如钩必须声明性和持久性,因为它具有生存应用程序停止/卸载。所以,如果你要写到全球性的。asax,我想你可以写一个特征EventReceiver执行的修改。

除此之外,你可以得到的更多细节,为什么?也许还有其他角度的攻击。这个想法的修改全球性的。asax上飞使我感到不适。这不可能是好的。

Oisin

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top