【问题标题】:SharePoint Content Type Event Receivers Impossible to Remove无法删除的 SharePoint 内容类型事件接收器
【发布时间】:2012-01-23 08:17:37
【问题描述】:

我在我的 SharePoint 暂存环境中遇到了一个非常奇怪的情况。我们最近建立了一个新的 SharePoint 2010 服务器(单个 WFE + 一个 DB 服务器),并从我们现有的环境中附加了一个备份的内容数据库。我们创建了一个新的 Web 应用程序,并将其指向附加的内容数据库。我们所有的网站集、网站、列表等都出现了,一切看起来都不错。

在移动数据库之前,我们已将一些自定义内容类型部署到现有环境中,并且我们希望升级这些内容类型。具体来说,我们将事件接收器附加到内容类型(使用代码,而不是 XML),并且我们需要更新这些事件接收器指向的程序集版本。所以我们运行了我们常用的代码(特征接收器的一部分)来删除事件接收器,但令我们惊讶的是,接收器仍然存在。

为了纠正这种情况,我们编写了一个控制台应用程序,它遍历每个网站集根站点中的所有内容类型 (SPWeb.ContentTypes) 并删除它们,然后在每个网站集上调用 SPContentType.Update(true)内容类型。调用 Update 没有返回任何错误,但更令我们惊讶的是,SharePoint 仍然报告事件接收器已附加。

在最后的努力中,我们甚至进入了内容数据库(在拍摄快照之后——请记住,这是暂存,而不是生产!)并从 EventReceivers 表中手动删除了有问题的接收器。我们认为这至少应该有某种效果。唉,SharePoint 仍然报告接收者在场。

我们一直在内容类型事件接收器上执行这些类型的升级,但从未在任何其他 SharePoint 场上遇到过此问题。这听起来像环境问题吗?是否可能是由于移动内容数据库而导致的?任何帮助将不胜感激,因为我们在这一点上完全被难住了。

【问题讨论】:

标签: sharepoint-2010 event-receiver


【解决方案1】:

首先,我永远不会建议更改数据库中的任何内容。从长远来看,它肯定会给您带来麻烦。

您确实提到您尝试从 Web 级别删除事件接收器,但不确定您是否尝试从列表/库级别删除它

使用 ContentTypeUsage 类并尝试从列表/库级别删除

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypeusage.aspx

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 2010-11-12
    • 1970-01-01
    • 2011-04-16
    • 2011-09-08
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多