代码之家  ›  专栏  ›  技术社区  ›  Flo

SharePoint:从ContentType注销EventReceiver时出错

  •  3
  • Flo  · 技术社区  · 15 年前

    我在从ContentType注销某些EventReceivers时遇到一些问题。ContentType和接收器是由我自己部署和注册的,所以我不会尝试删除任何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()”引发了一个异常,告诉我无法修改集合。正如您在代码中看到的,我已经尝试了不同的方法来解决这个问题,比如允许不安全的更新或者以提升的权限运行这个代码。但我总是得到同样的例外。

    我做错了什么?

    3 回复  |  直到 15 年前
        1
  •  6
  •   duh    15 年前

    您的问题是“AvailableContentTypes”属性返回 只读的 收集。

    您还应该使用“contenttypes”属性,并且一切都应该正常。

    当做,

    挖。

        2
  •  0
  •   Nat    15 年前

    类型是否基于发布类型?我在改变这些类型方面遇到了问题。否则,您可以尝试更改类型的整个SchemaXML。我发现,当其他方法不起作用时,这种方法有时也会起作用。

        3
  •  0
  •   Andy Mikula Eric Mickelsen    15 年前

    你应该能够设置 type.ReadOnly = false 以允许写入类型。

    此外,您的spweb不需要被释放-请参阅 Roger Lamb's blog here 了解更多详细信息。