SharePoint:从 ContentType 取消注册 EventReceiver 时出错
-
09-09-2019 - |
题
我在取消注册某些内容类型的事件接收器时遇到一些问题。内容类型和接收器是我自己部署和注册的,因此我不会尝试删除任何 MOSS 内置或内部事件接收器。
我尝试使用以下代码片段对此进行存档:
using (SPSite site = new SPSite("http://wssdev06/"))
{
using (SPWeb web = site.RootWeb)
{
// web.AllowUnsafeUpdates = true;
SPContentType type = web.AvailableContentTypes[<ContentTypeName>];
while (type.EventReceivers.Count > 0)
{
type.EventReceivers[0].Delete();
}
type.Update();
// web.AllowUnsafeUpdates = false;
}
}
不幸的是,命令“type.Update()”抛出一个异常,告诉我该集合无法修改。正如您在代码中看到的,我已经尝试了不同的方法来解决此问题,例如允许不安全的更新或以提升的权限运行此代码。但我总是遇到同样的例外。
那么我做错了什么?
解决方案
您的问题是, “AvailableContentTypes” 属性返回你的只读的集合。
您也应该使用 'CONTENTTYPES' 属性,ANS一切都应该罚款。
此致
挖。
其他提示
时根据发布类型的类型?我不得不改变这些类型的问题。否则,你可能会尝试改变类型的整个SchemaXml。我发现,当其他的方法,没有这招的确奏效。
你应该能够设置 type.ReadOnly = false
启用写入类型。
同样,您的 SPWeb 不需要废弃 - 请参阅 罗杰·兰姆的博客在这里 更多细节。
不隶属于 StackOverflow