Letzte Woche ist mir bei der Migration eines Custom Content Types ein Phänomen des Sharepoint 2010 unter gekommen. Ich wollte einen Content Type erstellen und dort zusätzlich Eventreceiver für ItemAdding, ItemUpdating, ItemDeleting und ItemAdded erstellen.

Dabei bin ich so vorgegangen, dass ich zuerst einen Inhaltstyp über die Visual Studio Projektvorlage erstellt habe, danach erstellte ich einen Eventreceiver über die VS-Projektvorlage.

image

Danach habe ich die cs-Datei des Eventreceivers aus dem Feature herauskopiert und den entsprechenden XML-Teil in den Content Type kopiert. Zudem habe ich die Assemblynamen bzw. Klassennamen angepasst. So sah das XML aus.

<?xml version="1.0" encoding="utf-8"?>
<Elements Id="70d4045a-009a-4f26-81ea-efb75f92d4c0" xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- Übergeordneter ContentType: Event (0x0102) -->
  <ContentType ID="0x0102002d023573007a4b42b1d5995550f8652e"
               Name="Mein Content Type"
               Group="Gruppenname"
               Description="Meine Beschreibung"
               Inherits="True"
               Version="0">
    <FieldRefs>
      <!-- Hier Fieldrefs -->
    </FieldRefs>
    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">
        <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events">
          <Receiver>
            <Name>ItemAdding</Name>
            <Type>ItemAdding</Type>
            <Assembly>Mein Assemblyname</Assembly>
            <Class>Mein Klassenname</Class>
            <SequenceNumber>10000</SequenceNumber>
          </Receiver>
          <Receiver>
            <!—Weitere Receiver --> 
          </Receiver>
        </spe:Receivers>
      </XmlDocument>
    </XmlDocuments>
  </ContentType>
  <!-- Hier Field IDs -->
</Elements>

 

Der Content Type wurde sauber bereitgestellt und konnte genutzt werden. Leider funktionierten die Eventreceiver nicht.

Lösung: Ich habe eine Erklärung in folgender Technetdiskussion gefunden (http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/daac5dee-a283-4c8f-8275-46b412688066/). In Sharepoint 2010 ist es so, dass das XML, welches im Bereich <XMLDocuments> steht nicht benutzt wird, wenn im Contenttype der Wert Inherits auf “True” steht. Sobald man ihn auf “False” stellt, funktionieren auch die Eventreceiver.

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.