Verwenden von Ereignisempfängern in SharePoint Foundation 2010 (Teil 2 von 2)

Zusammenfassung: Mithilfe von Ereignisempfängern in Microsoft SharePoint Foundation 2010 kann Ihr benutzerdefinierter Code auf bestimmte Aktionen in einem SharePoint-Objekt reagieren. Praktische Beispiele in diesem Artikel zeigen, wie Sie mithilfe von Ereignissen Ihre SharePoint-Anwendungen optimieren.

Letzte Änderung: Montag, 9. März 2015

Gilt für: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Inhalt dieses Artikels
Grundlagen von Ereignissen in SharePoint Foundation 2010
Arbeiten mit Ereignissen in SharePoint Foundation 2010
Verwenden der Ereignisempfängervorlage in Visual Studio 2010
Weitere Ressourcen

Bereitgestellt von: Ali Badereddin, Microsoft Corporation | Nick Gattuccio, Microsoft Corporation

Inhalt

  • Grundlagen von Ereignissen in SharePoint Foundation 2010

  • Arbeiten mit Ereignissen in SharePoint Foundation 2010

  • Verwenden der Ereignisempfängervorlage in Visual Studio 2010

  • Weitere Ressourcen

Grundlagen von Ereignissen in SharePoint Foundation 2010

Bei einem Ereignisempfänger in Microsoft SharePoint Foundation 2010 handelt es sich einfach um eine Methode, die für eine auslösende Aktion in einem angegebenen SharePoint-Objekt aufgerufen wird. Zu auslösenden Ereignissen zählen Aktionen wie das Hinzufügen, Aktualisieren, Löschen, Verschieben, Einchecken und Auschecken. SharePoint-Objekte, die Ereignissen lauschen – d. h., Ereignisempfängerhosts – beinhalten Objekte wie z. B. Websitesammlungen, Websites, Listen und Workflows.

Ereignisse sind für SharePoint-Entwickler hilfreiche Tools. Wenn ein Benutzer eine Aktion ausführt, die eine SharePoint-Website betrifft, können Sie diese Aktion abfangen und mit benutzerdefiniertem Code darauf antworten. Falls z. B. ein Projektmanager gewarnt werden muss, wenn neue Dokumente oder Dateien einer bestimmten Dokumentbibliothek hinzugefügt werden, könnten Sie Ereignisempfängercode schreiben, um eine E-Mail-Benachrichtigung an den Projektmanager zu senden, und dann diesen Code an die Aktion zum Hinzufügen von Elementen in der Dokumentbibliothek binden. SharePoint Foundation 2010 ist sehr flexibel bezüglich der Erkennung von SharePoint-Ereignissen und der Reaktion auf SharePoint-Ereignisse.

HinweisHinweis

In Microsoft Visual Studio 2010 gibt es nun eine SharePoint-Ereignisempfänger-Projektvorlage, mit der viele in diesem Artikel beschriebene Aufgaben automatisch ausgeführt werden. Um eine vollständige Beschreibung der Aktionen bereitzustellen, die während der gesamten Ereignispipeline auftreten, verwenden wir nicht die Visual Studio 2010-Ereignisempfänger-Projektvorlage. Dieser Artikel enthält jedoch einen kurzen Überblick über das Erstellen von Ereignisempfängern mithilfe von Visual Studio 2010 sowie Beispiele, in denen diese Vorlage verwendet wird.

Ereignisse wurden erstmalig in Windows SharePoint Services 2.0 eingeführt, wurden aber zunächst nur in Dokumentbibliotheken unterstützt. SharePoint-Ereignisse wurden damals als Ereignissenken bezeichnet. In Windows SharePoint Services 3.0 erhielt die SharePoint-Ereignisinfrastruktur mithilfe von verwalteten Ereignisempfängern ihre aktuelle Form.

Ereignisempfänger wurden im Vergleich zu Ereignissenken bezüglich mehrerer Aspekte verbessert. Sie sind einfacher in der Handhabung, weisen mehr Ereignistypen auf, und außerdem werden sie in Listen, Inhaltstypen, Workflows und Websites unterstützt. In SharePoint Foundation 2010 wurden neue Listen- und Webereignisse eingeführt. Darüber hinaus können Websitesammlungen nun als Ereignishosts agieren, Nachfolgeereignisse können nun synchron sein, und die Ereignisstornierung und der Ereignisidentitätswechsel wurden verbessert.

Funktionsweise von SharePoint-Ereignissen: Alles, was Sie wissen müssen, in einem einzigen Absatz

Ein SharePoint-Ereignisempfänger ist an ein SharePoint-Objekt gebunden – den Ereignishost – und reagiert durch das Auflösen von Ereignisempfängercode auf eine Benutzeraktion. Sie kompilieren Ihren Ereignisempfängercode in eine verwaltete Assembly, also eine im globalen Assemblycache bereitgestellte DLL-Datei.

Wo können Ereignisempfänger verwendet werden?

Wenn Sie den Aktionen, die in SharePoint ausgeführt werden, Verhaltensweisen hinzufügen möchten, können Sie mithilfe von Ereignisempfängern Ihren benutzerdefinierten Code auslösen, wenn ein bestimmter Vorgang stattfindet. In Tabelle 1 sind die verschiedenen Vorgänge aufgelistet, die für Ereignisempfänger verfügbar sind.

Tabelle 1. Für Ereignisempfänger verfügbare Vorgänge

Objekt

Vorgänge

Websitesammlung

  • Löschen

Web

  • Erstellen

  • URL-Änderung

  • Löschen

Liste

  • Erstellen

  • Löschen

  • E-Mail-Nachricht empfangen

Feld

  • Erstellen

  • Aktualisieren

  • Löschen

Element

  • Erstellen

  • Aktualisieren

  • Löschen

  • Einchecken

  • Auschecken

  • Datei verschieben

  • Datei konvertieren

  • Anlage hinzufügen

  • Anlage löschen

Workflow

  • Start

  • Abgeschlossen

  • Verschoben

Was sind Ereignisempfänger?

Ein Ereignisempfänger ist verwalteter Code, der auf SharePoint-Ereignisse reagiert, wenn bestimmte auslösende Aktionen für ein SharePoint-Objekt auftreten. Zu auslösenden Aktionen gehören Aktivitäten wie z. B. das Hinzufügen, Aktualisieren, Löschen, Verschieben, Einchecken und Auschecken.

Zum Erstellen eines Ereignisempfängers wird von einer der Basisklassen für Ereignisempfänger geerbt. In SharePoint gibt es fünf Basisklassen für Ereignisempfänger (siehe Tabelle 2 im folgenden Abschnitt). Beachten Sie, dass jede Basisklasse nur die angegebenen Ereignishosts und Ereignisse unterstützt. Sie müssen die entsprechende Basisklasse für Ereignisempfänger für den zu unterstützenden Hosttyp auswählen.

Nachdem Sie die Ereignisempfänger in der Ereignisempfängerklasse geschrieben haben, müssen Sie den Empfänger in eine verwaltete Assembly konvertieren und anschließend im globalen Assemblycache (GAC) platzieren. Schließlich müssen Sie die Ereignisempfänger an einen geeigneten Ereignishost binden. Weiter unten in diesem Artikel werden die Ereignisbindung und die verschiedenen Methoden zum Binden von Ereignissen behandelt.

Was sind Ereignishosts?

Ereignishosts sind gängige SharePoint-Objekte, die Ereignisse erwarten, bzw. deren Ereignisempfänger SharePoint-Ereignissen "lauschen". Zu diesen SharePoint-Ereignistypen für Hostobjekte gehören Instanzen gängiger Objekte, z. B. SharePoint-Websitesammlungen, Websites und Listen. Jeder Ereignishosttyp verfügt über spezifische Basistypen für Ereignisempfänger, die vererbt werden können.

In Tabelle 2 sind die Basisklassen für Ereignisempfänger und die Ereignishosttypen, die für jeden Empfänger unterstützt werden, sowie die unterstützten Ereignisse aufgelistet.

Tabelle 2. Basisklassen für Ereignisempfänger sowie unterstützte Ereignisse

Basisklasse für Ereignisempfänger

Verfügbare Ereignishosttypen

Unterstützte Ereignisse

SPWebEventReceiver

  • SPSite

  • SPWeb

  • SiteDeleting

  • SiteDeleted

  • WebAdding

  • WebProvisioned

  • WebDeleting

  • WebDeleted

  • WebMoving

  • WebMoved

SPListEventReceiver (Listen)

  • SPSite

  • SPWeb

  • ListAdding

  • ListAdded

  • ListDeleting

  • ListDeleted

SPListEventReceiver (Felder)

  • SPSite

  • SPWeb

  • SPList

  • SPContentType

  • FieldAdding

  • FieldAdded

  • FieldDeleting

  • FieldDeleted

  • FieldUpdating

  • FieldUpdated

SPItemEventReceiver

  • SPSite

  • SPWeb

  • SPList

  • SPContentType

  • ItemAdding

  • ItemAdded

  • ItemDeleting

  • ItemDeleted

  • ItemUpdating

  • ItemUpdated

  • ItemFileConverted

  • ItemFileMoving

  • ItemFileMoved

  • ItemCheckingIn

  • ItemCheckedIn

  • ItemCheckingOut

  • ItemCheckedOut

  • ItemAttachmentAdding

  • ItemAttachmentAdded

  • ItemAttachmentDeleting

  • ItemAttachmentDeleted

SPEmailEventReceiver

  • SPSite

  • SPWeb

  • SPList

  • EmailReceived

SPWorkflowEventReceiver

  • SPSite

  • SPWeb

  • SPList

  • SPContentType

  • WorkflowStarting

  • WorkflowStarted

  • WorkflowCompleted

  • WorkflowPostponed

Schlüsselkonzepte beim SharePoint-Ereignismodell

Neben den grundlegenden Bestandteilen des Ereignismodells (Ereignisempfänger, Ereignishosts und die Ereignisse selbst) gibt es beim SharePoint-Ereignismodell die folgenden Schlüsselkonzepte.

Vorabereignisse

Ein Vorabereignis tritt ein, bevor der angeforderte Vorgang ausgeführt wird. Beispielsweise ist das ItemAdding-Ereignis ein Vorabereignis, das vor dem Hinzufügen eines Elements zu einer SharePoint-Liste ausgelöst wird.

Anders ausgedrückt werden Vorabereignisse ausgelöst, wenn eine Aktion ausgeführt wird, bevor SharePoint in die Inhaltsdatenbank schreibt. Dies bietet für einen Ereignisempfänger die Gelegenheit, Aufgaben auszuführen, bevor für die Daten in einer Datenbank ein Commit ausgeführt wird. Ein gutes Beispiel für die Verwendung von Vorabereignissen ist die Datenüberprüfung, da Vorabereignisse vor dem Commit der Daten stattfinden. Sie können Vorabereignisse (bzw. synchrone Ereignisse) auch zum Abbrechen von Benutzeraktionen verwenden, sollte beispielsweise bei der Datenüberprüfung ein Fehler auftreten.

Ereignisempfängercode, der von einem Vorabereignis ausgelöst wird, wird im selben Thread wie der Code ausgeführt, der die ihn auslösende Benutzeraktion ausführt. Aus diesem Grund sind Vorabereignisse immer synchron. Vorabereignisse können Sie am Elementnamen erkennen, der mit dem Suffix "-ing" endet, z. B. ItemAdding, ListAdding usw.

Nachfolgeereignisse

Ein Nachfolgeereignis wird ausgelöst, nachdem der angeforderte Vorgang ausgeführt wurde. Beispielsweise ist das ItemAdded-Ereignis ein Nachfolgeereignis, das nach dem Hinzufügen eines Elements zu einer SharePoint-Liste ausgelöst wird.

Nachfolgeereignisse lösen Ereignisempfänger aus, die ausgeführt werden, nachdem für die Benutzeraktionen in der Inhaltsdatenbank ein Commit ausgeführt wurde, und rufen Code auf, der ausgeführt wird, nachdem die Inhaltsdatenbank geändert wurde. Auf diese Weise können Sie Logik ausführen, die auftritt, wenn ein Benutzer eine bestimmte Aktion abgeschlossen hat.

Nachfolgeereignisse können synchron oder asynchron ausgeführt werden. Wenn das Nachfolgeereignis synchron ist, wird es im selben Thread ausgeführt, in dem die auslösende Aktion auftritt. Wenn das Nachfolgeereignis allerdings asynchron ist, wird es in einem separaten Thread ausgeführt.

Nachfolgeereignisse können Sie am Elementnamen erkennen, der mit dem Suffix "-ed" endet, z. B. ItemDeleted, WebProvisioned usw.

Synchrone Ereignisse

Ein synchrones Ereignis wird im selben Thread ausgeführt, in dem die auslösende Aktion auftritt. Wenn beispielsweise der Benutzer ein Element aus der SharePoint-Benutzeroberfläche hinzufügt, wird das Ereignis vollständig ausgeführt, bevor wieder zum Benutzer gewechselt und angezeigt wird, dass das Element hinzugefügt wurde.

Alle Vorabereignisse sind synchrone Ereignisse.

Asynchrone Ereignisse

Ein asynchrones Ereignis wird zu einem späteren Zeitpunkt als die auslösende Aktion ausgeführt, und es wird in einem anderen Thread als die auslösende Aktion ausgeführt. Wenn beispielsweise ein Benutzer einer Dokumentbibliothek ein Element mithilfe der SharePoint-Benutzeroberfläche hinzufügt, wird mit der Ausführung des Ereignisses begonnen, bevor die Kontrolle wieder an den Benutzer übergeben wird. Es gibt jedoch keine Garantie, dass die Ausführung des Ereignisempfängers abgeschlossen wird, bevor dem Benutzer angezeigt wird, dass das Element hinzugefügt wurde.

Ereignisbindung

Für die Ereignisbindung (wird auch als Ereignisregistrierung bezeichnet) kann das Serverobjektmodell oder Feature-XML verwendet werden. In den folgenden Abschnitten finden Sie ausführliche Informationen zu Bindungsereignissen in SharePoint Foundation.

Ereignisstornierung

Mithilfe der Ereignisstornierung können Sie einen Ereignisempfängervorgang in einem Vorabereignis vor Abschluss der Aktion stornieren. Beispielsweise kann Code im ItemAdding-Ereignisempfänger geschrieben werden, mit dem die Aktion zum Hinzufügen des Elements storniert wird. Wenn der Benutzer ein Element hinzuzufügen versucht, wird der Vorgang storniert und das Element wird nicht der Liste hinzugefügt. Wenn der Vorgang storniert wird, muss dem Benutzer eine Fehlermeldung angezeigt werden oder eine benutzerdefinierte Fehlermeldung bereitgestellt werden, indem der Benutzer zu einer bestimmten URL umgeleitet wird.

Ereignisempfängersequenz

Die Ereignisempfängersequenz gibt die Reihenfolge an, in der ein Ereignisempfänger in Fällen ausgeführt wird, in denen ein Ereignis mehrere Ereignisempfänger auslöst. Wenn z. B. zwei ItemAdded-Ereignisempfänger an dieselbe Liste gebunden sind (ein Ereignisempfänger aus Assembly "1" und der zweite Ereignisempfänger aus Assembly "2"), wird der Ereignisempfänger mit der niedrigeren Sequenznummer zuerst ausgeführt. Ein praktisches Beispiel ist das Hinzufügen eines Ereignisempfängers zu einer Systemliste, an die bereits ein Systemereignisempfänger gebunden ist. In diesem Fall weisen Sie dem neuen Ereignisempfänger eine höhere Sequenznummer zu.

SharePoint-Ereignispipeline

In Abbildung 1 ist dargestellt, wie SharePoint-Ereignisse im Hinblick auf die Synchronisierung und Sequenzierung ausgeführt werden.

Abbildung 1. SharePoint-Ereignispipeline

SharePoint-Ereignispipeline

Beachten Sie Folgendes:

  • Synchrone Ereignisempfänger werden in sequenzieller Reihenfolge basierend auf den bei der Ereignisbindung angegebenen Sequenznummern aufgerufen. Dies gilt sowohl für synchrone Vorab- als auch Nachfolgeereignisse.

  • Asynchrone Nachfolgeereignisempfänger-Threads werden basierend auf der Sequenznummer in sequenzieller Reihenfolge ausgeführt. Es gibt jedoch keine Garantie, dass sie in derselben Reihenfolge abgeschlossen werden.

  • Ein asynchrones Nachfolgeereignis kann jederzeit gestartet werden, nachdem die zugehörige Benutzeraktion ausgeführt wurde. Es kann vorher, gleichzeitig oder nach Abschluss der Webanforderung gestartet werden.

Die synchronen Vorabereignisse werden ausgelöst, nachdem ein Benutzer eine Aktion in der SharePoint-Benutzeroberfläche gestartet hat und bevor die Benutzeraktion durch SharePoint Foundation ausgeführt wird. Falls mehrere synchrone Vorabereignisse vorhanden sind, werden sie in der durch die Sequenznummer angegebenen Reihenfolge ausgelöst. Entsprechend werden synchrone Nachfolgeereignisse nach der Ausführung der Benutzeraktion durch SharePoint Foundation ausgelöst. Sie werden ebenfalls in der durch die Sequenznummer angegebenen Reihenfolge ausgelöst. Wie Sie sehen, werden alle synchronen Ereignisse im selben Thread wie die Benutzeraktion verarbeitet.

Asynchrone Nachfolgeereignisse werden jedoch in sekundären Threads verarbeitet.

Arbeiten mit Ereignissen in SharePoint Foundation 2010

Das Erstellen eines SharePoint-Ereignisses besteht im Prinzip aus zwei Schritten. Im ersten Schritt identifizieren Sie den Vorgang, den Sie einem Ereignis zuordnen möchten, erben von der entsprechenden Basisklasse für Ereignisempfänger und schreiben anschließend den benutzerdefinierten Code für Ihren Ereignisempfänger. Im zweiten Schritt binden Sie das Ereignis an einen entsprechenden SharePoint-Ereignishost (dieser Schritt wird auch als "Registrieren" des Ereignisses bezeichnet)

Nachdem Sie den Ereignisempfängercode geschrieben und zu einer Assembly mit einer starken Signatur kompiliert haben, können Sie mithilfe einer der folgenden beiden Methoden das Ereignis an den Ereignishost binden: Sie können APIs im SharePoint-Objektmodell oder aber Feature-XML in einer SharePoint-Lösung verwenden. Beide Methoden werden ausführlich behandelt.

Verwenden des Objektmodells bzw. einer Lösung

Der Unterschied zwischen der Verwendung des Objektsmodells (OM) und der Verwendung von Lösungen zum Binden von SharePoint-Ereignissen lässt sich in wenigen Worten wie folgt beschreiben: Die OM-Methode ist flexibler und einfacher zu entwickeln, aber schwierig bezüglich der Bereitstellung und Wartung. Die Lösungsmethode ist nicht so flexibel und schwieriger zu entwickeln, aber wesentlich einfacher bezüglich der Bereitstellung und Wartung.

Bei Verwendung der OM-Methode steht das komplette SharePoint-Objektmodell zur Verfügung. Sie schreiben den Ereignisempfängercode, kompilieren ihn zu einer Assembly, die Sie im globalen Assemblycache (GAC) bereitstellen, und führen Code zum Binden der Ereignisse in der Assembly an einen SharePoint-Ereignishost aus.

Diese Methode ist im Entwicklungsmodus hilfreich, da Sie auf einfache Weise den Ereignisempfängercode und die Ereignisbindung testen und ändern und anschließend das Projekt erneut erstellen und bereitstellen können. Wenn Sie den Code allerdings von einer Entwicklungsplattform in eine Produktionsumgebung verschieben, ist die Einfachheit nicht mehr gegeben, da Sie alles manuell bereitstellen müssen. Dies bedeutet, dass Sie den Ereignisempfängercode (also die verwaltete Assembly) auf jeden einzelnen Front-End-Webserver in der Produktionsumgebung kopieren müssen. Anschließend müssen Sie die ausführbare Datei auf einem der Front-End-Webserver ausführen, und danach müssen Sie iisreset auf jedem Front-End-Webserver ausführen, um den Cache im IIS-Arbeitsprozess (w3wp.exe) zu aktualisieren. In einer umfangreichen Produktionsumgebung könnte dies ein äußerst umständliches (und risikoreiches) Unterfangen sein.

Bei der Methode mit den SharePoint-Lösungen gibt es Unterschiede bezüglich der Art und Weise, wie die Ereignisempfängerdefinition gebunden wird. Da darüber hinaus der Ereignisempfängercode im Bereitstellungspaket (WSP) zusammen mit den Lösungsdateien vorhanden ist, erweist sich die Bereitstellung in einer Serverfarm als wesentlich einfacher und zuverlässiger, und die Ereignisdefinition ist einfach durch die Aktivierung eines Features möglich. Die Lösungsmethode bietet den weiteren wichtigen Vorteil der Implementierung von Ereignisempfängern in teilweise vertrauenswürdigem Code (also in Lösungen mit eingeschränkter Sicherheitsstufe). Administratoren auf der Websitesammlungsebene können dann Ereignisempfänger hinzufügen. (Vor SharePoint 2010 konnten nur Farmadministratoren Ereignisempfänger hinzufügen.)

Die Bereitstellung erfordert dann nur Schritte, die normalerweise für die SharePoint-Lösungsbereitstellung mithilfe einer WSP-Datei verwendet werden. Durch Ausführen eines einzigen Bereitstellungsbefehls werden die Empfängerassembly und die Ereignisbindungen nach der Aktivierung des Features auf allen Front-End-Webservern bereitgestellt.

Mit Visual Studio 2010 wird dieser Vorgang sogar noch einfacher. Die Verwendung von Visual Studio bietet die Flexibilität der Objektmodellmethode unter Beibehaltung der Einfachheit der Lösungsmethode. In den folgenden Abschnitten wird bei der Verwendung von Ereignisempfängern darauf hingewiesen, inwieweit der Vorgang durch Visual Studio 2010 wesentlich vereinfacht wurde.

Verwenden des Serverobjektmodells

Bei der Verwendung des Serverobjektmodells spielen drei Aktionen eine wichtige Rolle: Erstellen von Ereigniscode, Binden von Ereignissen sowie das Ändern von Ereigniscode. In den folgenden Abschnitten werden diese Schritte ausführlich behandelt.

HinweisHinweis

In den folgenden Beispielen wird zwar Visual Studio verwendet, jedoch nicht die im Lieferumfang von Visual Studio 2010 enthaltenen SharePoint-Projektvorlagen. Aus diesem Grund können Sie entweder Visual Studio 2008 oder Visual Studio 2010 beim Neuerstellen der folgenden Beispiele verwenden.

Erstellen von Ereignissen mithilfe des Objektmodells

Der erste Schritt beim Erstellen eines benutzerdefinierten Ereignisempfängers ist das Überschreiben einer der Basisklassen für Ereignisempfänger. Die fünf SharePoint-Basisklassen für Ereignisempfänger sind weiter oben in diesem Artikel in Tabelle 2 aufgelistet, aber alle diese Basisklassen für Ereignisempfänger erben von SPEventReceiverBase, der zentralen Basisklasse für Ereignisempfänger.

So erstellen Sie einen Ereignisempfänger

  1. Erstellen Sie in Visual Studio 2008 oder Visual Studio 2010 ein C#-Klassenbibliotheksprojekt, beispielsweise mit dem Namen MyReceiverAssembly.

    Wichtiger HinweisWichtig

    Wenn Sie Visual Studio 2010 verwenden, müssen Sie unbedingt Microsoft .NET Framework 3.5 als Zielframework auswählen. Dies liegt daran, dass SharePoint 2010 auf .NET Framework 3.5 basiert. Sie finden diese Einstellung auf der Registerkarte Anwendung der Projekteigenschaften (siehe Abbildung 2).

    Abbildung 2. .NET Framework 3.5 als Zielframework

    Adressieren von .NET Framework 3.5

  2. Wählen Sie wie in Abbildung 3 dargestellt auf der Registerkarte Build der Projekteigenschaften für Zielplattform entweder x64 oder Beliebige CPU aus. Wählen Sie nicht x86 aus.

    Abbildung 3. Auswählen der entsprechenden Zielplattform

    Adressieren der geeigneten Plattform

  3. Wählen Sie auf der Registerkarte Signierungder Projekteigenschaften Assembly signieren aus.

  4. Klicken Sie auf Schlüsseldatei mit starkem Namen auswählen, und klicken Sie dann auf Neu.

  5. Geben Sie im Dialogfeld Schlüssel für einen starken Namen erstellen in das Textfeld Schlüsseldateiname einen belieben Namen ein. Deaktivieren Sie das Kontrollkästchen Schlüsseldatei mit Kennwort schützen, und klicken Sie dann auf OK.

  6. Benennen Sie die Klasse um, beispielsweise in MyReceiverClass.

  7. Fügen Sie einen Verweis auf Microsoft.SharePoint.dll hinzu.

  8. Erstellen Sie in der Klasse einen Verweis auf den Microsoft.SharePoint-Namespace, indem Sie die folgende Anweisung einfügen:

    using Microsoft.SharePoint;

  9. Erben Sie von der entsprechenden Unterklasse von SPEventReceiverBase, und zwar in Abhängigkeit von dem Ereignis, das Sie erstellen möchten (siehe Tabelle 2). Wenn Sie z. B. ein ItemAdded-Ereignis erstellen und binden möchten, erben Sie wie folgt von der SPItemEventReceiver-Basisklasse:

    Public class MyReceiverClass : SPItemEventReceiver

  10. Definieren Sie die Methoden für die Ereignisse, die Sie implementieren möchten. Eine hilfreiche Technik besteht darin, public override einzugeben und anschließen die Leertaste zu drücken. In Visual Studio zeigt IntelliSense wie in Abbildung 4 dargestellt die verfügbaren Ereignisse in der Klasse an.

    Abbildung 4. Anzeigen der verfügbaren Ereignisse mithilfe von IntelliSense

    Verwenden von IntelliSense zum Anzeigen verfügbarer Ereignisse

    Wenn Sie das ItemAdded-Ereignis auswählen, gibt es nun die folgende Methodendefinition:

    Public override void ItemAdded(SPItemEventProperties properties)
    {
        base.ItemAdded(Properties;
    }
    
  11. Erstellen Sie die Klassenbibliothek in einer DLL.

  12. Platzieren Sie die DLL im GAC, indem Sie zum Ordner %WINDIR%\assembly navigieren und die Assembly in den Ordner ziehen.

    Falls der Fehler "Zugriff verweigert" angezeigt wird oder ein sonstiger Fehler auftritt, der Sie daran hindert, die Assembly einfach dem Cache hinzuzufügen, können Sie wie folgt vorgehen.

    1. Stellen Sie sicher, dass die SharePoint-Entwicklungstools in Visual Studio 2010 auf dem Computer installiert sind.

    2. Starten Sie die Visual Studio-Eingabeaufforderung.

    3. Gebe Sie gacutil /i gefolgt vom Pfad zur Assembly ein. Wenn der Vorgang erfolgreich abgeschlossen wurde, wird die Meldung "Die Assembly wurde dem Cache erfolgreich hinzugefügt" angezeigt.

    4. Um zu bestätigen, dass die Assembly hinzugefügt wurde, geben Sie an der Eingabeaufforderung den folgenden Befehl zum Auflisten aller Assemblys ein, die im angegebenen Verzeichnis des Assemblycaches vorhanden sind (in diesem Fall im Cacheverzeichnis MyReceiverAssembly):

      gacutil /l MyReceiverAssembly

Binden von Ereignissen mithilfe des Objektmodells

Bei Verwendung des SharePoint Foundation-Objektmodells können Sie ein beliebiges Objekt binden (registrieren), das die EventReceivers-Eigenschaft aufweist. Die EventReceivers-Eigenschaft ist vom Typ SPEventReceiverDefinitionCollection, was das Hinzufügen von Ereignisempfängern zu Ereignishosts erleichtert. Im Folgenden finden Sie eine Liste von SharePoint-Objekten, die diese Eigenschaft aufweisen und als Ereignishosts verwendet werden können.

So binden Sie einen Ereignisempfänger

  1. Erstellen Sie in Visual Studio 2008 oder Visual Studio 2010 ein C#-Konsolenanwendungsprojekt, z. B. RegisterEvents.

    Wichtiger HinweisWichtig

    Wenn Sie Visual Studio 2010 verwenden, müssen Sie unbedingt Microsoft .NET Framework 3.5 als Zielframework auswählen. Dies liegt daran, dass SharePoint 2010 auf .NET Framework 3.5 basiert. Sie finden diese Einstellung auf der Registerkarte Anwendung der Projekteigenschaften (siehe Abbildung 2 weiter oben).

  2. Fügen Sie einen Verweis auf Microsoft.SharePoint.dll hinzu.

  3. Erstellen Sie in der Klasse einen Verweis auf den Microsoft.SharePoint-Namespace, indem Sie die folgenden Anweisung einfügen:

    using Microsoft.SharePoint;

  4. Fügen Sie der EventReceivers-Auflistung im angegebenen Objekt ein neues Element vom Typ SPEventReceiverDefinition hinzu, das so oder ähnlich aussieht:

    SPEventReceiverDefinition def = list.EventReceivers.Add();

  5. Um den vollständigen Namen der im vorhergehenden Verfahren erstellten Assembly abzurufen, wechseln Sie zum globalen Assemblycache (GAC), suchen Sie die Assembly, klicken Sie mit der rechten Maustaste auf den Assemblyeintrag, und klicken Sie auf Eigenschaften. Das Eigenschaftenfenster sollte etwa so wie in Abbildung 5 aussehen.

    Abbildung 5. Assemblyeigenschaften im GAC

    Assemblyeigenschaften im globalen Assemblycache (GAC)

  6. Kopieren Sie die Werte aus dem Eigenschaftenfenster, um den vollständigen Namen, die Version, die Kultur und das öffentliche Schlüsseltoken anzugeben. In diesem Beispiel sieht der Quellcode wie folgt aus:

    def.Assembly = "MyReceiverAssembly, Version=1.0.0.0, Culture=Neutral,PublicKeyToken=12e5e5525fb3d28a";

  7. Legen Sie die Class-Eigenschaft fest. Die Class-Eigenschaft stellt den vollqualifizierten Namen der Klasse, die den Ereignisempfänger enthält, im Format Namespace.Klasse dar. In diesem Beispiel sieht der Quellcode wie folgt aus:

    def.Class = "MyReceiverAssembly.MyReceiverClass";

  8. Legen Sie die Type-Eigenschaft fest. In diesem Beispiel sieht der Quellcode wie folgt aus:

    def.Type = SPEventReceiverType.ItemAdded;

  9. Legen Sie die Name-Eigenschaft fest. Diese Eigenschaft ist optional. Sie können einen Namen für die Ereignisempfängerdefinition angeben oder aber diesen Wert ignorieren. In diesem Beispiel sieht der Quellcode wie folgt aus:

    def.Name = "My ItemAdded Event Receiver";

  10. Legen Sie die Synchronization-Eigenschaft fest. Diese Eigenschaft ist optional. Wenn Sie für diese Eigenschaft keinen Wert angeben, wird sie auf Default festgelegt (d. h. SPEventReceiverSynchronization.Default). Standardmäßig sind Vorabereignisse synchron und Nachfolgeereignisse asynchron. In diesem Beispiel sieht der Quellcode wie folgt aus:

    def.Synchronization = SPEventReceiverSynchronization.Synchronous;

  11. Legen Sie die SequenceNumber-Eigenschaft fest. Diese Eigenschaft ist optional. Legen Sie mithilfe dieser Eigenschaft die Reihenfolge fest, in der Ereignisse ausgelöst werden, wenn mehrere Ereignisse in der Ereignisempfängerdefinition vorhanden sind. Dieser Eigenschaft wird standardmäßig auf 10000 voreingestellt, falls Sie keinen Wert festlegen. Zur Auswahl steht ein beliebiger Wert zwischen 0 und (216)-1.

  12. Speichern Sie die Ereignisempfängerdefinition in der SharePoint-Inhaltsdatenbank, indem Sie die folgende Anweisung hinzufügen:

    def.Update();

Nachfolgend finden Sie den vollständigen Quellcode für das vorhergehende Verfahren. Beim Ausführen dieses Codes wird das Ereignis in der Liste Tasks der Website https://localhost registriert. Wenn Sie ein neues Element in der Liste erstellen, wird das ItemAdded-Ereignis ausgelöst.

using (SPSite site = new SPSite("https://localhost"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists["Tasks"];
        SPEventReceiverDefinition def = list.EventReceivers.Add();
        def.Assembly = 
          "MyReceiverAssembly, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=12e5e5525fb3d28a";
        def.Class = "MyReceiverAssembly.MyReceiverClass";
        def.Type = SPEventReceiverType.ItemAdded;
        def.Name = "My ItemAdded Event Receiver";
        def.Synchronization = SPEventReceiverSynchronization.Synchronous;
        def.SequenceNumber = 1000;
        def.Update();
    }
}

Ändern von Ereignissen

Das SharePoint-Ereignismodell erleichtert das Ändern und erneute Bereitstellen des Ereignisempfängercodes. In den folgenden Anleitungen wird beschrieben, wie Sie Änderungen am Beispielprojekt MyReceiverAssembly vornehmen.

So aktualisieren Sie einen Ereignisempfänger

  1. Öffnen Sie in Visual Studio Ihr Projekt (z. B. MyReceiverAssembly), und nehmen Sie Änderungen daran vor.

  2. Erstellen Sie das Projekt erneut, um einen neuen Build der DLL-Datei zu erstellen.

  3. Platzieren Sie den neuen Build der DLL im globalen Assemblycache (GAC). Sie müssen unbedingt die vorherige DLL überschreiben oder löschen.

  4. Führen Sie iisreset aus, um den IIS-Cache zu löschen und auf diese Weise die neue Assemblyversion in den GAC zu laden. Dadurch wird sichergestellt, dass die Änderungen von SharePoint übernommen werden.

Verwenden von SharePoint-Lösungen

SharePoint-Lösungen stellen die Alternative zur Verwendung des SharePoint-Objektmodells zum Erstellen und Bereitstellen von Ereignisempfängern dar. In diesem Abschnitt werden die Schritte zum manuellen Erstellen einer Ereignisempfängerlösung erläutert.

Sie erstellen Ereignisse für die Implementierung bei Verwendung von SharePoint-Lösungen auf dieselbe Weise wie mit dem SharePoint-Objektmodell. Führen Sie das im Abschnitt Erstellen von Ereignissen mithilfe des Objektmodells beschriebene Verfahren zum Erstellen der Ereignisse aus.

Der eigentliche Unterschied zwischen diesen beiden Methoden zum Implementieren von Ereignissen besteht in der Bindung, für die Sie ein in einer Lösungsdatei (WSP) bereitgestelltes SharePoint-Feature verwenden.

Binden von Ereignissen mithilfe von Lösungen

Im folgenden Verfahren wird unter Verwendung des Beispielereignisses (das ItemAdded-Ereignis, das wir in der MyReceiverAssembly-DLL erstellt haben) ein SharePoint-Feature erstellt und an die Liste Tasks auf der Website gebunden, auf der das Feature aktiviert werden soll.

So erstellen Sie ein SharePoint-Feature

  1. Erstellen Sie einen Ordner mit demselben Namen wie das Feature.

  2. Erstellen Sie in dem neuen Ordner die beiden XML-Dateien feature.xml und eventbinder.xml.

  3. Aktivieren Sie IntelliSense in den XML-Dateien, indem Sie auf die Dateieigenschaften zugreifen und einen Verweis auf die Zielschemadatei (XSD) hinzufügen, die im Verzeichnis …/TEMPLATE/XML/wss.xsd gespeichert ist.

    Normalerweise müssen Sie diesen Link jedes Mal neu erstellen, wenn Sie die XML-Datei öffnen. Wenn Sie allerdings ein Visual Studio-Projekt verwenden, müssen Sie nur die Schemadatei dem Projekt hinzufügen.

    Wenn Sie jedoch häufig sehr viele CAML-Dateien in mehreren Visual Studio-Projekten erstellen, ist diese Vorgehensweise umständlich. Eine alternative Methode ist das Laden der XSD-Datei, wenn eine XML-Datei geöffnet wird, die auf das Schema verweist. Führen Sie dazu die folgenden Schritte aus.

    1. Suchen Sie die XML-Datei Catalog.xml im Visual Studio-Installationsordner, in der Regel C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas.

    2. Verweisen Sie in der Datei Catalog.xml auf die Schemadatei wss.xsd, indem Sie das folgende Tag hinzufügen. Stellen Sie sicher, dass href auf den richtigen Speicherort der Datei wss.xsd verweist.

      <Schema href="C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/12/TEMPLATE/XML/wss.xsd" targetNamespace="https://schemas.microsoft.com/sharepoint/" />

    TippTipp

    Falls Sie Visual Studio 2010 verwenden, können Sie Schritt 3 überspringen. Beim Öffnen einer XML-Datei, die das Attribut xmlns="https://schemas.microsoft.com/sharepoint/" enthält, fügt Visual Studio 2010 automatisch einen Verweis auf wss.xsd hinzu und aktiviert damit IntelliSense.

  4. Erstellen Sie in der Datei feature.xml ein <Feature>-Element. Legen Sie das xmlns-Attribut auf "https://schemas.microsoft.com/sharepoint/" fest, legen Sie das Id-Attribut auf eine GUID (Globally Unique Identifier) fest, legen Sie das Scope-Attribut auf "Web" fest, und legen Sie das Title-Attribut auf "EventBinderFeature" fest.

    Wichtiger HinweisWichtig

    Für das Id-Attribut müssen Sie eine gültige GUID angeben, die Sie in Visual Studio durch Ausführen von guidgen.exe erhalten.

  5. Fügen Sie im <Feature>-Element ein <ElementManifests>-Element hinzu.

  6. Fügen Sie im <ElementManifests>-Element ein <ElementManifest>-Element hinzu. Legen Sie das Location-Attribut auf "eventbinder.xml" fest.

  7. Erstellen Sie in der Datei eventbinder.xml ein <Elements>-Element. Legen Sie das xmlns-Attribut auf "https://schemas.microsoft.com/sharepoint/" fest.

  8. Fügen Sie im <Elements>-Element ein <Receivers>-Element hinzu. Legen Sie das ListUrl-Attribut auf "Tasks" fest.

  9. Fügen Sie im <Receivers>-Element ein <Receiver>-Element hinzu.

  10. Fügen Sie im <Receiver>-Element die folgenden Elemente mit einem entsprechenden Wert für die folgende Elemente hinzu:

    • <Assembly>

    • <Class>

    • <Type>

    • <Name>

    • <Synchronization>

    • <SequenceNumber>

Nach Abschluss des vorhergehenden Verfahrens sollte die Datei feature.xml in etwa wie folgt aussehen.

<Feature Id="E54C7FF5-1DF3-4B0B-8FFF-DB3185ECE8A6" 
         Scope="Web" 
         Title="Event Binder Feature"
         xmlns="https://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="eventbinder.xml" />
  </ElementManifests>
</Feature>

Und die Datei eventbinder.xmlsollte in etwa wie folgt aussehen.

<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <Receivers ListUrl="Lists/Tasks">
    <Receiver>
      <Assembly>MyReceiverAssembly, Version=1.0.0.0, Culture=Neutral, 
        PublicKeyToken=12e5e5525fb3d28a</Assembly>
      <Class>MyReceiverAssembly.MyReceiverClass</Class>
      <Type>ItemAdded</Type>
      <Name>My ItemAdded Event Receiver</Name>
      <Synchronization>Synchronous</Synchronization>
      <SequenceNumber>1000</SequenceNumber>
    </Receiver>
  </Receivers>
</Elements>

Packen der Lösung

Für die Bereitstellung von Ereignisempfängern in Ihrer SharePoint-Installation müssen Sie die Dateien zu einer Lösungspaketdatei (WSP) zusammenfassen. Bei der WSP-Datei handelt es sich einfach um eine CAB-Datei mit der Dateinamenerweiterung WSP.

Mit der Lösungsmanifestdatei wird SharePoint angewiesen, was mit den in der WSP-Datei gepackten Dateien geschehen soll. Beispielsweise wird mit dem <FeatureManifest>-Element angegeben, dass dieser Ordner ein SharePoint-Feature ist und deshalb in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES bereitgestellt und in der Serverfarm installiert werden soll. Entsprechend wird mit dem <Assembly>-Element angegeben, dass es sich bei dieser Datei um eine Assembly handelt; das DeploymentTarget-Attribut bestimmt, ob die Assembly im globalen Assemblycache (GAC) oder in einem BIN-Ordner für Webanwendungen bereitgestellt werden soll.

Gehen Sie wie folgt vor, um die Datei manifest.xml vorzubereiten, zu erstellen und zu bearbeiten:

So bereiten Sie die Lösungsinhalte vor

  1. Erstellen Sie den Ordner EventSolution.

  2. Kopieren Sie den Featureordner EventBinder in den Ordner EventSolution.

  3. Kopieren Sie die Assembly MyReceiverAssembly.dll in den Ordner EventSolution.

  4. Erstellen Sie die XML-Datei manifest.xml im Ordner EventSolution.

So bearbeiten Sie die Datei "manifest.xml"

  1. Erstellen Sie in der Datei manifest.xml ein <Solution>-Element. Legen Sie das xmlns-Attribut auf "https://schemas.microsoft.com/sharepoint/" fest, legen Sie das SolutionId-Attribut auf eine GUID fest, und legen Sie das Title-Attribut auf "Event Receiver Solution" fest.

  2. Fügen Sie im <Solution>-Element ein <FeatureManifests>-Element hinzu.

  3. Fügen Sie im <FeatureManifests>-Element ein <FeatureManifest>-Element hinzu. Legen Sie das Location-Attribut auf "EventBinder\feature.xml" fest.

  4. Fügen Sie im <Solution>-Element ein <Assemblies>-Element hinzu.

  5. Fügen Sie im <Assemblies>-Element ein <Assembly>-Element hinzu. Legen Sie das Location-Attribut auf "MyReceiverAssembly" fest, und legen Sie das DeploymentTarget-Attribut auf "GlobalAssemblyCache" fest.

Die Datei manifest.xml sollte jetzt ungefähr folgendermaßen aussehen.

<Solution SolutionId="11C76135-CEEC-475B-9A93-67E5EF151B3C"
          Title="Event Receiver Solution"
          xmlns="https://schemas.microsoft.com/sharepoint/">
  <FeatureManifests>
    <FeatureManifest Location="EventBinder\feature.xml"/>
  </FeatureManifests>
  <Assemblies>
    <Assembly Location="MyReceiverAssembly" 
              DeploymentTarget="GlobalAssemblyCache">
    </Assembly>
  </Assemblies>
</Solution>

Nachdem nun die Lösungsinhalte fertig sind, müssen Sie nur noch die Diamond-Directive-Datei (Diamond Directive File, DDF) erstellen. Eine DDF enthält Informationen, mit deren Hilfe Microsoft Cabinet Maker (makecab.exe) feststellt, wie die Dateien als CAB-Datei gepackt und komprimiert werden sollen. (Die DDF selbst wird nicht der CAB-Datei hinzugefügt.)

So erstellen Sie eine DDF

  1. Erstellen Sie im Ordner EventSolution die Datei cab.ddf.

  2. Öffnen Sie die Datei cab.dff in einem Text-Editor wie z. B. Windows-Editor, und fügen Sie Folgendes hinzu.

    ;
    .OPTION EXPLICIT
    .Set CabinetNameTemplate=MyEventSolution.wsp 
    .set DiskDirectoryTemplate=CDROM
    .Set CompressionType=MSZIP
    .Set UniqueFiles="ON"
    .Set Cabinet=on
    .Set DiskDirectory1=Package
    manifest.xml manifest.xml
    MyReceiverAssembly.dll MyReceiverAssembly.dll
    EventBinder\feature.xml EventBinder\feature.xml
    EventBinder\EventBinder.xml EventBinder\EventBinder.xml
    
  3. Speichern Sie die Datei.

Wichtiger HinweisWichtig

Stellen Sie bei einer DDF sicher, dass die erste Zeile mit einem Semikolon beginnt.

Die OPTION EXPLICIT-Anweisung erzwingt die explizite Deklarierung aller Variablen in der Datei. Durch die Festlegung von UniqueFiles auf "ON" wird sichergestellt, dass die Zieldateien eindeutig sind. "ON" ist der Standardwert. Denn wenn ein Dateiname zweimal verwendet wird, bedeutet dies gewöhnlich, dass dieselbe Datei versehentlich zweimal verwendet wurde, wodurch Speicherplatz verschwendet wird.

Die letzten vier Zeilen in dieser DDF sind die Dateizuordnungen: der erste Name in jeder Zeile ist die Quelle, der zweite Name ist das Ziel.

Zum Erstellen der Lösungspaketdatei öffnen Sie eine Eingabeaufforderung, navigieren Sie zum Ordner EventSolution, und geben Sie folgenden Befehl ein:

makecab /F cab.ddf

Cabinet Maker erstellt die WSP-Datei in einem Unterordner des Ordners EventSolution mit dem Namen Package. Der Name der neuen Datei lautet MyEventSolution.wsp.

Bereitstellen der Lösung

In SharePoint 2010 gibt es zwei Arten von Lösungen: Farmlösungen und Lösungen mit eingeschränkter Sicherheitsstufe. Sandkastenlösungen spielen eine wichtige Rolle, da sie dem Administrator einer Websitesammlung das Hochladen und Aktivieren von Lösungen auf der Websitesammlungsebene ermöglichen. Mit Lösungen mit eingeschränkter Sicherheitsstufe ist der Zugriff auf die WFE-Dateien nicht mehr erforderlich.

Standardmäßig wird jedoch durch die Verwendung von Lösungen mit eingeschränkter Sicherheitsstufe eingeschränkt, welcher Code ausgeführt werden kann. Wenn z. B. Code in unserem Ereignisempfänger versucht, auf den Datenträger zuzugreifen, wird der Code bei der Bereitstellung der Lösung als Farmlösung problemlos ausgeführt. Bei der Bereitstellung des Ereignisempfängers als Lösung mit eingeschränkter Sicherheitsstufe wird allerdings beim Versuch, auf den Datenträger zuzugreifen, eine Laufzeitausnahme gemeldet.

HinweisHinweis

In SharePoint 2010 wurde das Verwaltungstool Stsadm.exe durch Windows PowerShell abgelöst. Sie können Stsadm weiterhin zum Bereitstellen von Farmlösungen verwenden, aber es wird empfohlen, Windows PowerShell zu verwenden. Lösungen mit eingeschränkter Sicherheitsstufe können mit Stsadm nicht bereitgestellt werden.

So stellen Sie eine Farmlösung bereit

  1. Führen Sie den folgenden Windows PowerShell-Befehl aus, um die Lösung in den Farmlösungsspeicher hochzuladen:

    Add-SPSolution -LiteralPath full_path_to_solution

  2. Aktivieren Sie die Lösung durch Ausführen des folgenden Befehls:

    Install-SPSolution solution_name.wsp -GACDeployment

So stellen Sie eine Sandkastenlösung bereit

  1. Führen Sie den folgenden Windows PowerShell-Befehl aus, um die Lösung in den Lösungskatalog der Websitesammlung hochzuladen:

    Add-SPUserSolution -LiteralPath full_path_to_solution -Site siteUrl

  2. Aktivieren Sie die Lösung durch Ausführen des folgenden Befehls:

    Install-SPUserSolution solution_name.wsp -Site siteUrl

Beim Bereitstellen der Lösung werden die Features in den Ordner TEMPLATE\FEATURES kopiert, die verwalteten Assemblys werden im GAC platziert, und andere Dateien werden im entsprechenden Ordner unter TEMPLATES platziert. Nun können Sie die Features aktivieren.

Verwenden Sie einen der folgenden Windows PowerShell-Befehle, wenn Sie eine Lösung zurückziehen müssen:

  • Farmlösung: Uninstall-SPSolution solution_name.wsp

  • Sandkastenlösung: Uninstall-SPUserSolution solution_name.wsp -Site siteUrl

Nachdem Sie eine Lösung zurückgezogen haben, können Sie sie mit einem der folgenden Befehle löschen:

  • Farmlösung: Remove-SPSolution solution_name.wsp

  • Sandkastenlösung: Remove-SPUserSolution solution_name.wsp -Site siteUrl

Verwenden der Ereignisempfängervorlage in Visual Studio 2010

In Visual Studio 2010 gibt es eine erweiterte Anzahl von SharePoint-Projektvorlagen in Microsoft Visual Basic und C#, einschließlich einer Vorlage für SharePoint-Ereignisempfänger. Die Projektvorlage vereinfacht die Verwaltung von Ereignissen für SharePoint-Objekte, wie z. B. Websites, Listen, Workflows und sonstige gängige Elemente.

HinweisHinweis

Der Schwerpunkt dieses Artikels liegt nicht bei der Visual Studio-Projektvorlage für Ereignisempfänger, da damit alle technischen Details für das SharePoint-Ereignismodell bereitgestellt werden sollen, auch jene Details, die in der Visual Studio-Projektvorlage ausgeblendet sind. In diesem Abschnitt wird deshalb aufgezeigt, wie einfach das Erstellen eines einfachen Ereignisempfängers mithilfe dieser Projektvorlage ist.

Beim Erstellen eines Ereignisempfängerprojekts mithilfe der Ereignisempfänger-Projektvorlage in Visual Studio werden mehrere in diesem Artikel beschriebene Schritte automatisch ausgeführt. Hierzu gehören das Erstellen und Signieren der Assembly, das Erstellen des Features für die Ereignisbindung, das Packen der Lösung, die Bereitstellung und das Debugging.

So erstellen Sie mithilfe der Ereignisempfänger-Projektvorlage in Visual Studio einen SharePoint-Ereignisempfänger

  1. Erstellen Sie in Visual Studio 2010 mithilfe der SharePoint 2010-Ereignisempfängervorlage ein neues Projekt.

  2. Wählen Sie die Vertrauensebene für Ihre SharePoint-Lösung basierend auf der Implementierung des Ereignisempfängercodes aus. Falls für die Lösung kein Zugriff auf den Datenträger, das Netzwerk oder das System benötigt wird, ist eine Lösung mit eingeschränkter Sicherheitsstufe die bevorzugte Wahl, da sie einfacher ist und eher verwendet wird.

  3. Wählen Sie die Ereignisse aus, die Sie überschreiben möchten. In unserem Fall möchten wir das ItemAdded-Ereignis überschreiben und an die Liste Tasks binden.

    • Welchen Typ von Ereignisempfängern wünschen Sie? Listenelementereignisse

    • Welches Element soll die Ereignisquelle sein? Tasks

    • Verwalten der folgenden Ereignisse: Ein Element wurde hinzugefügt

  4. Klicken Sie auf Fertig stellen.

  5. Fügen Sie im ItemAdded-Ereignis Ihren benutzerdefinierten Code hinzu.

  6. Klicken Sie auf der Menüleiste auf Erstellen, und klicken Sie dann auf Projektmappe bereitstellen.

Die Lösung wird gepackt, hinzugefügt und bereitgestellt. Sie können sogar einen Haltepunkt im Ereignisempfängercode festlegen und ihn debuggen.

Mehrere praktische Beispiele für die Verwendung des SharePoint-Ereignismodells finden Sie im zweiten Teil dieses Artikels: Verwenden von Ereignisempfängern in SharePoint Foundation 2010 (Teil 2 von 2).

Weitere Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen: