你怎么能勾SharePoint 2007的功能到一个网站的的Application_Start?(H

2019-09-22 00:47发布

我在想,如果有一个开发功能时钩到SharePoint 2007网站的Application_Start一个好办法吗? 我知道我可以直接编辑在网站根Global.asax文件,但有什么办法,这样它就总是与功能部署要做到这一点?

谢谢!

Answer 1:

其实,这是可能的,但它不涉及在Global.asax文件。

许多微软的例子证明通过在Global.asax线路代码,但是当涉及到SharePoint,这不是一个最佳实践方法。 理想情况下,你的代码应该得到打包为特征,并通过WSP部署(如你已经知道)。

关键在于落实有问题的代码作为一个HttpModule(即实现IHttpModule接口类型),并将其接线到ASP.NET管道维护您的SharePoint应用程序。 粗略地说,这些步骤如下:

  1. 创建一个实现IHttpModule接口的类。
  2. 实现你的HttpModule的Init方法; 这就是所谓的当HttpApplication的(在这种情况下,SPHttpApplication)是安装程序,它给你一个机会来进行处理,电线了事件委托其他管道事件等。
  3. 创建SPFeatureReceiver,将增加和删除分别从目标web.config文件中的HTTP模块上激活和失活。 这是使用的SPWebConfigModification类型来更新目标的web.config文件<的HttpModules>节点。
  4. 包中的所有的功能,并通过WSP部署。

有关HTTP模块开发的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms227673.aspx 。 有关SPWebConfigModification类型的一些额外的细节,请参见http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx 。

结果:能够处理应用程序启动并通过功能部署一类。 黑客无需手动文件。

使用自定义缓存提供商(IVaryByCustomHandler)是需要注册本身与SPHttpApplication回调的时候才开始最近的 - 我已经成功地使用这种在许多场景。

虽然你的问题是有点老,我希望这有助于!



Answer 2:

在这我的直觉是,这将是不可能的。 的Application_Start由运行时的asp.net引擎调用时启动,所以最有可能不能以任何方式修改钩在Global.asax以外的处理器 - 例如钩必须声明和持久性,因为它有生存的应用程序停止/卸载。 所以,如果你有写在Global.asax,我想你可以写一个功能EventReceiver进行修改。

这且不说,你可以给的,为什么更多的细节? 也许还有其他攻击角度。 修改上飞在Global.asax的想法让​​我感到不适。 这不可能是好的。

[287]莪



文章来源: How can you hook a SharePoint 2007 feature into the Application_Start of a site?