我在取消注册某些内容类型的事件接收器时遇到一些问题。内容类型和接收器是我自己部署和注册的,因此我不会尝试删除任何 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 不需要废弃 - 请参阅 罗杰·兰姆的博客在这里 更多细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top