我在从contenttype中注销一些事件接收器时遇到一些问题。contenttype和接收器是我自己部署和注册的,所以我不会尝试删除任何MOSS内置或内部的eventreceivers。
我尝试使用以下代码片段对其进行归档:
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()“抛出了一个异常,告诉我集合不能被修改。正如您在代码中看到的,我已经尝试了不同的方法来解决此问题,例如允许不安全的更新或以提升的权限运行此代码。但我总是得到相同的异常。
那么我到底做错了什么呢?
发布于 2009-02-27 10:18:36
您的问题是"AvailableContentTypes“属性返回一个只读集合。
你也应该使用'ContentTypes‘属性,一切都应该没问题。
致以敬意,
达格。
发布于 2009-02-26 21:21:42
类型是否基于发布类型?我在更改这些类型时遇到了问题。否则,您可以尝试更改该类型的整个SchemaXml。我发现,当其他方法不起作用时,这种方法有时会起作用。
发布于 2009-02-26 21:32:53
您应该能够将type.ReadOnly = false设置为启用对该类型的写入。
同样,您的SPWeb也不需要处理-有关更多详细信息,请参阅Roger Lamb's blog here。
https://stackoverflow.com/questions/591225
复制相似问题