Aktivieren von SharePoint 2010-Sandkastenlösungen mithilfe von Code

SharePoint 2010

Zusammenfassung: Informationen zum programmgesteuerten Aktivieren und Deaktivieren einer Lösung mit eingeschränkter Sicherheitsstufe in Microsoft SharePoint Server 2010.

Wrox-Logo

Bücher von Wrox zu SharePoint (in englischer Sprache)

Die Lösung mit eingeschränkter Sicherheitsstufe ist ein neues Feature in SharePoint 2010, mit dem Entwickler für SharePoint 2010-Funktionalität sorgen können, die in einem gesonderten, Sandkasten genannten Speicherbereich ausgeführt wird. Der Code der Lösung wird im Sandkasten ausgeführt, sodass etwaige Probleme im Code isoliert bleiben und nicht bewirken, dass die SharePoint-Anwendung, in der der Code ausgeführt wird, den Betrieb einstellt. In vorherigen SharePoint-Versionen mussten Entwickler ihre Assemblys dem globalen Assemblycache oder dem Ordner \bin des virtuellen SharePoint-Verzeichnisses hinzufügen.

Das Hinzufügen von Assemblys zum globalen Assemblycache (GAC) birgt Risiken, da sämtlicher Code in der Assembly vollständig vertrauenswürdig ausgeführt wird. Das Hinzufügen von Assemblys zum Ordner \bin ist sicherer, doch wenn der IIS-Arbeitsprozess, der die SharePoint-Webanwendung ausführt, auf ein Problem trifft, stellt er mitunter den Betrieb ein. Ist dies der Fall, ist ggf. kein Zugriff mehr auf die SharePoint-Webanwendung über einen Browser oder Webdienste möglich. Darüber hinaus können Assemblys, die dem GAC oder dem Ordner \bin hinzugefügt werden, Code enthalten, der versehentlich Objekte auf der Website einschließlich der Website selbst löscht.

Sandkastenlösungen arbeiten mit dem Windows-Dienst SharePoint 2010 User Code Host. Wenn dieser Dienst nicht ausgeführt wird, löst SharePoint beim Bereitstellen einer Lösung mit eingeschränkter Sicherheitsstufe eine Ausnahme aus. Sandkastenlösungen arbeiten außerdem mit der neuen Dokumentbibliothek mit dem Lösungskatalog, der in jeder Websitesammlung vorhanden ist. Wie bei allen anderen Dokumentbibliotheken können Sie Lösungen mit eingeschränkter Sicherheitsstufe in den Lösungskatalog hochladen. Darüber hinaus werden Websitevorlagen, die Sie erstellen, indem Sie eine Website als Vorlage erstellen, im Lösungskatalog gespeichert.

In diesem Artikel wird das Verwalten von Lösungen mit eingeschränkter Sicherheitsstufe mit C# und Windows PowerShell beschrieben. Als Entwickler sind Sie meist mehr mit C# oder Visual Basic vertraut, doch sollten Sie auch Windows PowerShell in Betracht ziehen, selbst wenn Sie keine Erfahrung damit haben. Windows PowerShell ermöglicht das Ausführen vieler SharePoint-Befehle mithilfe einer einfachen Batchdateisprache und steht auf allen Servern zur Verfügung, auf denen SharePoint installiert ist. Windows PowerShell ermöglicht die Ausführung einfacher Skripts zum Bearbeiten von SharePoint, ohne dass Visual Studio auf dem Server installiert sein muss.

Zum Aktivieren einer Lösung mit eingeschränkter Sicherheitsstufe mit C# müssen Sie zunächst in Visual Studio 2010 ein Konsolenprojekt erstellen. Wählen Sie dazu im Menü Datei > Neu > Projekt aus. Wählen Sie im Dialogfeld Neues Projekt (Abbildung 1) unter Visual C# den Eintrag Windows und dann Konsolenanwendung aus. Geben Sie ActivateSandboxSolution in das Textfeld Name ein, und klicken Sie dann auf OK.

Abbildung 1. Dialogfeld "Neues Projekt"

Dialogfeld 'Neues Projekt'

Klicken Sie nach Erstellen des Projekts mit der rechten Maustaste auf den Ordner Verweise, und wählen Sie Verweis hinzufügen aus. Klicken Sie im Dialogfeld Verweis hinzufügen auf die Registerkarte .NET, wählen Sie Microsoft.SharePoint in der Liste aus, und klicken Sie auf OK. Wenn Sie keine bereitzustellende Lösung mit eingeschränkter Sicherheitsstufe haben, suchen Sie die Datei HelloWorldSolution.wsp im heruntergeladenen Begleitcode zu diesem Artikel, und fügen Sie sie dem Projekt hinzu. Ändern Sie den Wert von In Ausgabeverzeichnis kopieren in Immer kopieren, um anzugeben, dass sich die WSP-Datei im selben Verzeichnis wie die kompilierte ausführbare Datei befindet. Das Ändern des Werts sorgt dafür, dass Ihr Code keine Ausnahme auslöst, wenn die WSP-Datei nicht vorhanden ist.

Sie können nun mit dem Codieren beginnen. Doppelklicken Sie im Projektmappen-Explorer auf Program.cs, um die Datei zu öffnen. Fügen Sie der Datei die folgenden using-Anweisungen hinzu.

using Microsoft.SharePoint;
using System.IO.File;

Fügen Sie der Main-Methode den folgenden Code hinzu, um einen Verweis auf die Websitesammlung zu erhalten, in der Sie die Lösung mit eingeschränkter Sicherheitsstufe bereitstellen möchten. Der try catch-Block fängt etwaige Fehler ab und gibt sie in der Konsole aus.

try {
    using (SPSite siteCollection = new SPSite("http://local.demo.com")) {
        // More code will go here.
        Console.WriteLine("Done!");
    }
} catch (Exception ex) {
    Console.WriteLine(ex.ToString());
}

Im vorherigen Codebeispiel wird ein neues Microsoft.SharePoint.SPSite-Objekt erstellt, indem die URL der Websitesammlung an den Konstruktor der SPSite-Klasse übergeben wird. Mithilfe des SPSite-Objekts können Sie eine Lösung mit eingeschränkter Sicherheitsstufe in den Lösungskatalog hochladen und ihre Features aktivieren. Zum programmgesteuerten Hochladen einer Lösung mit eingeschränkter Sicherheitsstufefügen Sie dem using-Block folgenden Code hinzu.

SPDocumentLibrary solutionGallery = 
    (SPDocumentLibrary)siteCollection.GetCatalog(
        SPListTemplateType.SolutionCatalog);
SPFile file = solutionGallery.RootFolder.Files.Add(
    "HelloWorldSolution.wsp", File.ReadAllBytes("HelloWorldSolution.wsp"));

Die erste Anweisung im Codebeispiel ruft einen Verweis auf die Dokumentbibliothek mit dem Lösungskatalog ab, indem die Microsoft.SharePoint.SPListTemplateType.SolutionCatalog-Eigenschaft an die GetCatalog-Methode der SPSite-Klasse übergeben wird. Die zweite Anweisung fügt die WSP-Datei dem Stammordner der Dokumentbibliothek mit dem Lösungskatalog hinzu. Die Add-Methode der Microsoft.SharePoint.SPFileCollection-Klasse verwendet zwei Parameter: den Namen der Datei und ein Bytearray des Dateiinhalts. Lesen Sie mithilfe der ReadAllBytes-Methode der File-Klasse die WSP-Datei in ein Bytearray ein. Durch Hinzufügen einer Datei wird eine Microsoft.SharePoint.SPFile-Instanz zurückgegeben, die die zuvor hochgeladene WSP-Datei darstellt, die im nächsten Codebeispiel benötigt wird. Fügen Sie zum Aktivieren der Lösung mit eingeschränkter Sicherheitsstufe hinter der letzen Zeile des letzten Codebeispiels die folgende Codezeile hinzu.

SPUserSolution solution = siteCollection.Solutions.Add(file.Item.ID);

Die SPSite-Klasse enthält die Solutions-Eigenschaft, die die aktivierte Lösungen mit eingeschränkter Sicherheitsstufe in der Websitesammlung enthält. Rufen Sie zum Aktivieren einer Lösung mit eingeschränkter Sicherheitsstufe die Add-Methode auf, und übergeben Sie an diese die Listenelement-ID der WSP-Datei. Da Sie einen Verweis auf die WSP-Datei in der Dateivariablen gespeichert haben, können Sie mit deren Item-Eigenschaft deren Microsoft.SharePoint.SPListItem-Objekt abrufen und mithilfe der ID-Eigenschaft der SPListItem-Klasse die Listenelement-ID der Datei abrufen. Nach der Aktivierung der Lösung müssen Sie die Features in der Lösung aktivieren.

An dieser Stelle werden die Features in der Lösung auf den Seiten Websitefeatures und Websitesammlungs-Features angezeigt, auf die auf der Seite Websiteeinstellungen zugegriffen wird. Die Features sind noch nicht aktiviert, weshalb Sie zu ihrer Aktivierung den folgenden Code hinzufügen müssen.

siteCollection.RootWeb.Features.Add(
    new Guid("ae664cd4-2e19-4af2-927e-af5b587bb36d"), false, 
    SPFeatureDefinitionScope.Site);

Im Codebeispiel wird auf die RootWeb-Eigenschaft zugegriffen, um das Microsoft.SharePoint.SPWeb-Objekt abzurufen, das die Stammwebsite der Websitesammlung darstellt. Die SPWeb-Klasse hat eine Features-Eigenschaft, die eine Auflistung der auf Websiteebene aktiven Features abruft. Die SPSite-Klasse hat auch eine Features-Eigenschaft, die eine Auflistung der auf Websitesammlungs-Ebene aktiven Features abruft. Die Add-Methode verwendet drei Parameter: die ID des zu aktivierenden Features, einen Wert, der angibt, ob das Aktivieren des Features erzwungen werden soll, auch wenn Probleme vorliegen, und den Site-Wert der Microsoft.SharePoint.SPFeatureDefinitionScope-Aufzählung (bei diesem Beispiel muss der Wert dieser Aufzählung stets Site sein). Die einzige Variable darf die ID des Features sein. Versuchen Sie nicht, die Aktivierung eines Features zu erzwingen.

Benennen Sie zum Abrufen der ID der Features in einer Lösung mit eingeschränkter Sicherheitsstufe die Erweiterung in CAB. WSP-Dateien sind CAB-Dateien, ein unternehmenseigene Komprimierungsformat. Durch Umbenennen der Erweiterung in CAB können Sie zum Öffnen der Datei darauf doppelklicken. Suchen Sie in der Datei sämtliche Dateien vom Typ feature.xml. Für jedes Feature in der Lösung mit eingeschränkter Sicherheitsstufe gibt es eine feature.xml-Datei. Öffnen Sie alle feature.xml-Dateien, und notieren Sie die Werte für die Attribute Id und Scope des Feature-Elements. Das folgende Codebeispiel zeigt den Inhalt der Datei feature.xml in der Datei HelloWorldSolution.wsp.

<Feature xmlns="http://schemas.microsoft.com/sharepoint/" 
    Title="Hello World Action" 
    Description="Adds a &quot;Hello World&quot; item to the Site Actions 
    menu." 
    Id="ae664cd4-2e19-4af2-927e-af5b587bb36d" 
    Scope="Web">
    <ElementManifests>
        <ElementManifest Location="HelloWorldAction\Elements.xml" />
    </ElementManifests>
</Feature>

Die ID des Features ist ae664cd4-2e19-4af2-927e-af5b587bb36d, was dem Wert entspricht, der an die Add-Methode der Microsoft.SharePoint.SPFeatureCollection-Klasse aus dem vorherigen Codebeispiel entspricht. Notieren Sie den Wert des Scope-Attributs. In der Lösungen mit eingeschränkter Sicherheitsstufe kann der Wert Scope entweder Web oder Site sein. Der Wert Web bedeutet, dass das Feature auf Websiteebene aktiviert wird. Der Wert Site bedeutet, dass das Feature auf Websitesammlungs-Ebene aktiviert wird. Der Wert für Scope bestimmt, ob das Feature über die siteCollection.Features-oder siteCollection.RootWeb.Features-Eigenschaft aktiviert wird.

Ihr Code ist nun vollständig. Klicken Sie auf Debuggen und dann auf Debugging starten, um das Projekt auszuführen. Navigieren Sie nach erfolgreicher Ausführung des Projekts zur SharePoint-Website. Klicken Sie auf das Menü Websiteaktionen. Unten im Menü sollte das neue Element Hello World angezeigt werden.

Wenn Sie kein Entwickler sind oder Ihre Lösungen mit eingeschränkter Sicherheitsstufe nicht mit Visual Studio bereitstellen möchten, können Sie Windows PowerShell verwenden. Windows PowerShell ist eine leistungsstarke Batchausführungsumgebung, die Sie mit Windows PowerShell-Snap-Ins erweitern können. SharePoint, Microsoft Exchange und Microsoft SQL Server können beispielsweise mit Windows PowerShell verwaltet werden. Wählen Sie zum Verwenden von Windows PowerShell mit SharePoint 2010 im Startmenü Programme > Microsoft SharePoint 2010-Produkte > SharePoint 2010-Verwaltungsshell.

In das geöffnete Windows PowerShell-Konsolenfenster können Sie Cmdlets eingeben, die die Lösungen mit eingeschränkter Sicherheitsstufe ebenso hochladen und aktivieren wie der C#-Code in den vorherigen Codebeispielen. Schauen Sie sich die Befehle in Tabelle 1 an.

Tabelle 1. Windows PowerShell-Cmdlets für SharePoint Server 2010-Features

Cmdlet

Beschreibung

Add-SPUserSolution

Lädt eine neue Lösung mit eingeschränkter Sicherheitsstufe in den Lösungskatalog hoch.

Install-SPUserSolution

Aktiviert eine Lösung mit eingeschränkter Sicherheitsstufe in einer Websitesammlung.

Enable-SPFeature

Aktiviert ein Feature.

Disable-SPFeature

Deaktiviert ein Feature.

Update-SPUserSolution

Aktualisiert eine aktivierte Lösung mit eingeschränkter Sicherheitsstufe in einer Farm.

Uninstall-SPUserSolution

Deaktiviert eine Lösung mit eingeschränkter Sicherheitsstufe in einer Websitesammlung.

Remove-SPUserSolution

Entfernt eine Lösung mit eingeschränkter Sicherheitsstufe aus dem Lösungskatalog.

Weitere Informationen zu diesen Befehlen finden Sie unter Cmdlets für Features und Lösungen (SharePoint Server 2010).

Hochladen und Aktivieren einer Sandkastenlösung

Mit dem Cmdlet Add-SPUserSolution können Sie eine Lösung mit eingeschränkter Sicherheitsstufe hochladen. Das Cmdlet verwendet als Parameter den vollständigen Pfad der WSP-Datei und die URL der Websitesammlung.

Add-SPUserSolution -LiteralPath c:\HelloWorldSolution.WSP -Site 
     http://local.demo.com

In diesem Beispiel befindet sich die WSP-Datei im Stammverzeichnis von Laufwerk C:, und die URL der Websitesammlung lautet http://local.demo.com. Wenn das Cmdlet erfolgreich ausgeführt wird, enthält das Konsolenfenster keine Ausgabe. Andernfalls enthält es eine Fehlermeldung.

Aktivieren Sie eine Lösung mit eingeschränkter Sicherheitsstufe mit dem Befehl Install-SPUserSolution. Der Befehl Install-SPUserSolution erfordert den Namen der WSP-Datei und die URL der Website.

Install-SPUserSolution -Identity HelloWorldSolution.WSP  -Site
     http://local.demo.com

Der Wert des Arguments Identity ist der Name der WSP-Datei. Der Wert für Site ist die URL der Websitesammlung. Bei erfolgreicher Ausführung des Cmdlets wird die folgende oder eine ähnliche Ausgabe angezeigt.

Name                           SolutionId                           Status
----                           ----------                           ------
HelloWorldSolution.wsp         c49a456d-430e-4c50-9cb5-7d8cccd04747 Activated

Aktivieren oder Deaktivieren eines Features

Nach Aktivierung der Lösung können Sie ihre Features aktivieren. Öffnen Sie zum Bestimmen der IDs der Features die WSP-Datei. Rufen Sie im Anschluss den Befehl Enable-SPFeature auf.

Enable-SPFeature -Identity ae664cd4-2e19-4af2-927e-af5b587bb36d -URL
    http://local.demo.com

Das Identity-Argument kann entweder den Namen des Features oder dessen ID verwenden. Das URL-Argument verwendet die URL der Website oder Websitesammlung, in der das Feature aktiviert wird. Verwenden Sie zum Deaktivieren eines Features das Cmdlet Disable-SPFeature und dieselben Argumente wie zuvor.

Disable-SPFeature -Identity ae664cd4-2e19-4af2-927e-af5b587bb36d -URL
    http://local.demo.com

Entfernen einer Sandkastenlösung

Nach Deaktivierung des Features können Sie die Lösung mit eingeschränkter Sicherheitsstufe deaktivieren und aus dem Lösungskatalog entfernen. Mit dem Cmdlet Uninstall-SPUserSolution können Sie eine Lösung mit eingeschränkter Sicherheitsstufe deaktivieren. Übergeben Sie wie beim Cmdlet Install-SPUserSolution Argumente für den Namen der WSP-Datei und die URL der Websitesammlung, in der sich die WSP-Datei befindet.

Uninstall-SPUserSolution -Identity HelloWorldSolution.WSP -Site
     http://local.demo.com

Entfernen Sie die Lösung mit eingeschränkter Sicherheitsstufe schließlich mit dem Befehl Remove-SPUserSolution. Der Befehl Remove-SPUserSolution verwendet dieselben Argumente wie das Cmdlet Uninstall-SPUserSolution.

Remove-SPUserSolution -Identity HelloWorldSolution.WSP -Site 
    http://local.demo.com

Nach Ausführung des Cmdlets wird die Lösung mit eingeschränkter Sicherheitsstufe aus dem Lösungskatalog entfernt.

Sandkastenlösungen bietet eine sichere Möglichkeit, SharePoint kontrolliert und geregelt zu erweitern. Anhand der in diesem Artikel genannten Tipps und Techniken können Sie Lösungen mit eingeschränkter Sicherheitsstufe wie gewünscht verwalten. Dies ist für SharePoint-Farmen in Unternehmen entscheidend, in denen mehrere Mitarbeiter oder Abteilungen Lösungen in SharePoint bereitstellen. Durch Erstellen von Skripts und Konsolenanwendungen können Sie Lösungen mit eingeschränkter Sicherheitsstufe auf einheitliche Weise bereitstellen und entfernen und dadurch die Möglichkeit von Bereitstellungsfehlern eindämmen.

Bryan Phillips ist Seniorpartner bei Composable Systems, LLC und ein Microsoft Most Valuable Professional für SharePoint Server. Er ist Mitverfasser von "Professional Microsoft Office SharePoint Designer 2007" sowie "Beginning SharePoint Designer 2010" und unterhält einen Blog zu SharePoint. Bryan arbeitet seit 1997 mit Microsoft-Technologien und hat Zertifizierungen als Microsoft Certified Trainer (MCT), Microsoft Certified Solution Developer (MCSD), Microsoft Certified Database Administrator (MCDBA) und Microsoft Certified Systems Engineer (MCSE).

Die folgenden technischen Redakteure haben an Microsoft SharePoint 2010-Artikeln von Wrox mitgearbeitet:

  • Matt Ranlett ist ein SQL Server MVP und war über viele Jahre eine feste Institution der .NET-Entwicklercommunity in Atlanta. Als Gründungsmitglied von Atlanta Dot Net Regular Guys hat Matt mehrere regionale Benutzergruppen gegründet und leitet diese. Nach der Arbeit verbringt er viele Stunden mit lokalen und nationalen Communityaktivitäten, wie beispielsweise der SharePoint 1, 2, 3!-Reihe, der Organisation von drei Codecamps in Atlanta, der Tätigkeit als Vice President of Technology im Vorstand von INETA sowie Auftritten bei mehreren Podcasts wie z. B. .Net Rocks und dem ASP.NET-Podcast. Dennoch fand Matt kürzlich Zeit, sich mit einer wunderbaren Frau namens Kim zu verheiraten, die er bei der Aufzucht von drei riesigen Hunden unterstützt. Matt arbeitet derzeit als Seniorberater für Intellinet und gehört dem Team an, das mithilfe von innovativen Lösungen für den Erfolg von Unternehmen sorgt.

  • Jake Dan Attis. Was Muster, Praxis und Steuerung im Hinblick auf die SharePoint-Entwicklung betrifft, sind Sie bei Jake Dan Attis goldrichtig. Er ist von Moncton, Kanada, in die Region Atlanta gezogen und hat einen Abschluss in angewandter Mathematik, ist aber ein hundertprozentiger SharePoint-Hardcoreentwickler. Normalerweise nimmt Dan an Community-Events in der Region Atlanta teil, hält dort Vorträge oder organisiert derartige Events, wie beispielsweise Codecamps, SharePoint-Samstage und die SharePoint-Benutzergruppe in Atlanta. Wenn Dan einmal nicht in Visual Studio arbeitet, verbringt er gerne Zeit mit seiner Tochter Lily, schaut sich Hockey und Football an und kostet weltweite Biersorten.

  • Kevin Dostalek kann über 15 Jahre Erfahrung in der IT-Branche sowie über 10 Jahre Erfahrung in der Verwaltung großer IT-Projekte und der Führung von IT-Personal aufweisen. Er hat Projekte für Unternehmen ganz unterschiedlicher Größe geleitet und hatte verschiedene Funktionen inne, wie beispielsweise Entwickler, Architekt, Business Analyst, technischer Leiter, Manager Entwicklung, Projektmanager, Programm-Manager und Mentor/Coach. Darüber hinaus hat Kevin zwischen 2005 und 2008 auch als Vice President eine Lösungsbereitstellungsabteilung für einen MS Gold Partner mittlerer Größe geleitet und war später auch als Vice President of Innovation and Education tätig. Anfang 2010 gründete Kevin das Unternehmen Kick Studios, das Beratungs-, Entwicklungs- und Schulungsservices für die Spezialbereiche SharePoint und Social Computing anbietet. Seitdem ist er auch bei zahlreichen Benutzergruppenversammlungen, Treffen und Konferenzen im ganzen Land als Referent aufgetreten. Weitere Informationen zu Kevin finden Sie in seinem Blog "The Kickboard".

  • Larry Riemann verfügt über mehr als 17 Jahre Erfahrung im Entwurf und der Entwicklung von Geschäftsanwendungen für einige der weltweit größten Unternehmen. Larry ist ein unabhängiger Berater, Eigentümer von Indigo Integrations und bietet SharePoint-Beratung ausschließlich über SharePoint911 an. Er ist Autor, veröffentlicht Artikel und hält gelegentlich Vorträge auf Konferenzen. In den letzten Jahren befasste er sich in erster Linie mit SharePoint, dem Entwickeln und Erweitern von über SharePoint hinausgehender Funktionalität. Neben seiner Arbeit an SharePoint ist Larry ein ausgebildeter .NET-Architekt und verfügt über umfangreiches Know-how in Sachen Systemintegration, Unternehmensarchitektur und Hochverfügbarkeitslösungen. Weitere Informationen zu Larry finden Sie in seinem Blog.

  • Sundararajan Narasiman ist ein technischer Architekt bei der Content Management & Portals Group von Cognizant Technology Solutions, Chennai, und verfügt über mehr als 10 Jahre Branchenerfahrung. Sundararajan ist in erster Linie als Architektur- und Technologieberater für die SharePoint Server 2010-Stapel- und Mainstream .NET 3.5-Entwicklung tätig. Er ist ein begeisterter Programmierer und interessiert sich auch für Extremprogrammierung und EDT.

Anzeigen: