sharepoint - 如何将 SharePoint 2007 功能挂接到网站的 Application_Start?

标签 sharepoint sharepoint-2007 global-asax application-start

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

谢谢!

最佳答案

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

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

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

  • 创建一个实现 IHttpModule 接口(interface)的类。
  • 在你的 HttpModule 中实现 Init 方法;这是在设置 HttpApplication(在本例中为 SPHttpApplication)时调用的,它使您有机会执行处理、为其他管道事件连接事件委托(delegate)等。
  • 创建一个 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 .

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

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

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

    关于sharepoint - 如何将 SharePoint 2007 功能挂接到网站的 Application_Start?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/122205/

    相关文章:

    sharepoint - 从 SPContext 获取对象时应该使用 "using"吗?

    javascript - Sharepoint - 如何从列表中的 Javascript 表单中删除链接

    html - 将搜索下拉菜单移动到 Sharepoint 2010 中的搜索输入框上方

    sharepoint - 如何以编程方式从共享点站点获取所有文档库的列表

    sharepoint - 防止 SharePoint 列表项删除

    c# - 为什么我不能在我的 global.asax 文件夹中添加我的自定义模型联编程序?

    c# - Global.asax 仅在 Debug模式下运行

    javascript - 将共享点列表下拉列表设置为只读

    c# - 以编程方式搜索特定的 SharePoint 用户

    asp.net-mvc - MVC3 session 开始事件触发两次