Best Practices für die Entwicklung von Sandkastenlösungen
Letzte Änderung: Dienstag, 12. April 2011
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Vermeiden der Erstellung statischer Member
Vermeiden der Auslösung von Ausnahmefehlern
Verwenden sowohl des AllowPartiallyTrustedCallers-Attributs als auch des SharePointPermission-Attributs
Verfügbar in SharePoint Online
In diesem Thema werden Best Practices für das Entwickeln von Lösungen mit eingeschränkter Sicherheitsstufe beschrieben.
Vermeiden der Erstellung statischer Member
Wenn eine bestimmte Lösung mit eingeschränkter Sicherheitsstufe zum ersten Mal auf einem bestimmten Server verwaltet wird, auf dem der SharePoint Foundation-Sandkasten-Codedienst (wird manchmal auch als Hostdienst für Benutzercode bezeichnet) ausgeführt wird, erstellt der Dienst eine Anwendungsdomäne dafür in einem Sandkasten-Arbeitsprozess, und alle statischen Variablen im Lösungscode werden in die Domäne geladen. Die Anwendungsdomäne bleibt nach Abschluss der Lösung mit eingeschränkter Sicherheitsstufe erhalten und wird wiederverwendet, wenn diese Lösung mit eingeschränkter Sicherheitsstufe erneut angefordert wird, beispielsweise von einem anderen Benutzer in einer anderen Websitesammlung. Dies hat den Nebeneffekt, dass die statischen Werte nicht erneut geladen werden, und diese Werte sind nicht notwendigerweise für jede Ausführung der Lösung mit eingeschränkter Sicherheitsstufe in jedem Kontext geeignet. Stellen Sie sich beispielsweise vor, dass vom Lösungscode SPContext.Current in das statische Feld myContext eingefügt wird. Wenn diese Lösung von einer anderen Websitesammlung angefordert wird, ist der Wert von myContext.Site nicht gültig.
Deshalb sollten Sie das Erstellen statischer Felder und Eigenschaften im Sandkastencode vermeiden.
Vermeiden der Auslösung von Ausnahmefehlern
Ihr Code sollte keine Ausnahmefehler auslösen. Durch einen Ausnahmefehler in einer Lösung mit eingeschränkter Sicherheitsstufe werden alle Lösungen mit eingeschränkter Sicherheitsstufe im Sandkasten-Arbeitsprozess beendet, und nicht nur die Sandkastenlösung, von der der Ausnahmefehler ausgelöst wurde. Aus demselben Grund empfiehlt es sich, alle Ausnahmen zu erfassen und in der Benutzeroberfläche der Sandkastenlösung einen entsprechenden Fehler zu melden, wie z. B. die Message-Eigenschaft des Exception-Objekts.
Verwenden sowohl des AllowPartiallyTrustedCallers-Attributs als auch des SharePointPermission-Attributs
Mit Code im Sandkasten-Arbeitsprozess können nur Assemblys aufgerufen werden, die das AllowPartiallyTrustedCallersAttribute-Attribut aufweisen. Das heißt, die meisten benutzerdefinierten Assemblys, die Sie in Lösungen mit eingeschränkter Sicherheitsstufe bereitstellen, müssen dieses Attribut aufweisen. Darüber hinaus benötigt ASP.NET dieses Attribute in jeder Assembly, die eine von WebPart abgeleitete Klasse enthält. Aus diesen Gründen wird dieses Attribut von Microsoft Visual Studio standardmäßig der Datei AssemblyInfo hinzugefügt, wenn ein Lösung mit eingeschränkter Sicherheitsstufesprojekt gestartet wird. Assemblys mit diesem Attribut stellen jedoch ein Sicherheitsrisiko dar, wenn das Lösungspaket jemals als Farmlösung installiert wird, da dadurch jeder teilweise vertrauenswürdige Aufrufer die Klassen der Assembly in einer voll vertrauenswürdigen Umgebung aufrufen könnte. Wenn Klassen auf das SharePoint-Objektmodell zugreifen, hätte jeder teilweise vertrauenswürdige Aufrufer Zugriff auf das SharePoint-Objektmodell. Um dies zu vermeiden, muss jede Klasse in einer Assembly, die mit dem AllowPartiallyTrustedCallers-Attribut gekennzeichnet ist und das SharePoint-Objektmodell aufruft, mit dem folgenden Berechtigungsanforderungsattribut versehen werden:
[Microsoft.SharePoint.Security.SharePointPermission(System.Security.Permissions.SecurityAction.LinkDemand, ObjectModel=true)]
Dadurch wird sichergestellt, dass nur Aufrufer mit der Berechtigung für das SharePoint-Objektmodell die Member der Klasse aufrufen können.
Das AllowPartiallyTrustedCallers-Attribut ist nicht unbedingt für alle Assemblys in Lösungen mit eingeschränkter Sicherheitsstufe notwendig. Beispielsweise wird ein Ereignisempfänger nur vom voll vertrauenswürdigen EventCodeHost-Element aufgerufen. Wenn also in der Assembly nur ein Ereignisempfänger vorhanden ist, kann das AllowPartiallyTrustedCallers-Attribut entfernt werden.
Siehe auch
Konzepte
Möglichkeiten und Einschränkungen von Sandkastenlösungen