2009-02-26 7 views
3

コンテンツレシーバを登録していないイベントレシーバを登録解除するときに問題が発生しました。コンテンツタイプとレシーバーは自分で導入して登録しましたので、MOSSの組み込みイベントレシーバーまたは内部イベントレシーバーを削除しようとはしません。SharePoint:EventReceiverフォームのコンテンツタイプを登録解除する際のエラー

私は、次のコードスニペットでこれをアーカイブしようとしている:「)type.Update(」

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; 
      } 
     } 

は残念ながらコマンドコレクションが変更できないことを私に告げる例外をスローします。コードでわかるように、私は既にこの問題を解決するために、安全でないアップデートを許可するか、昇格した権限でこのコードを実行するなど、さまざまなことを試みました。しかし、私はいつも同じ例外を受け取ります。

どうしたのですか?

答えて

6

問題は、 "AvailableContentTypes"プロパティがREAD-ONLYコレクションを返すことです。

「ContentTypes」プロパティも使用する必要があります。

ありがとう、

ダグ。

0

タイプは公開タイプに基づいていますか?私はこれらのタイプを変更する問題がありました。それ以外の場合は、その型のSchemaXml全体を変更してみてください。私はこれが時には他の方法ではうまくいかないことが分かった。

0

タイプに書き込みを有効にするには、type.ReadOnly = falseを設定する必要があります。

また、SPWebを廃棄する必要はありません。詳細はRoger Lamb's blog hereを参照してください。

+0

RootWebをこれ以上処理しないためのヒントです。 – Flo

関連する問題