SharePoint内容类型事件接收器无法删除

时间:2012-01-22 15:42:59

标签: sharepoint-2010 event-receiver

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

首先,我绝不会建议在DB中更改任何内容。从长远来看,它肯定会给你带来麻烦。

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

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

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