3

一部のイベントレシーバーを contenttype から登録解除する際に問題が発生しました。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()」は、コレクションを変更できないことを示す例外をスローします。コードでわかるように、この問題を解決するために、安全でない更新を許可したり、昇格された特権でこのコードを実行したりするなど、さまざまなことを既に試しました。しかし、私はいつも同じ例外を受け取ります。

それで、私は何を間違っていますか?

4

3 に答える 3

6

問題は、「AvailableContentTypes」プロパティが読み取り専用のコレクションを返すことです。

「ContentTypes」プロパティも使用する必要があります。すべて問題ないはずです。

よろしく、

掘る。

于 2009-02-27T10:18:35.970 に答える
0

type.ReadOnly = falseタイプへの書き込みを有効にするように設定できるはずです。

また、SPWeb を破棄する必要はありません。詳細については、 Roger Lamb のブログを参照してください。

于 2009-02-26T21:32:52.537 に答える