Was ist der richtige Weg, um Shop-Website-Ebene Globale Variablen, die in einer SharePoint-Website?
Eine Sache, die hat mich angespornt, mich verrückt SharePoint2007 ist die scheinbare Unfähigkeit, frei definierbarer Einstellungen, die speziell für eine Website oder Websitesammlung selbst, und nicht der Inhalt. Ich meine, Sie haben einige vordefinierte Einstellungen, wie die Website-Logo, der Name der Website, und verschiedene andere Dinge, aber es scheint nicht überall sein, um das hinzufügen von neuen Arten von Einstellungen.
Die Anwendung, die ich arbeite, muss in der Lage sein, um mehrere Arten von "Projekt-Website-Sammlungen", die nach einem Basis-template, aber haben einige zusätzliche Einstellungen, die speziell für diese Websitesammlung und dass man allein ist. Zusätzlich zu den standard-site-Namen, die wir ebenfalls definieren müssen Sie die Projektnummer, den Projektnamen und den Namen des Kunden. Und angesichts der Anfragen von einigen unserer Kunden, erreichen wir auch einen Punkt, wo wir haben konfigurierbare Einstellungen, die sich verändern, wie die Abläufe funktionieren, wie, ob Dateien sind gekennzeichnet mit Buchstaben oder Zahlen.
Unsere aktuelle Lösung, die ich bin skeptisch, wurde zum speichern einer XML-Datei auf dem SharePoint-server. Diese Datei enthält einen Knoten für jede Websitesammlung, gekennzeichnet durch die URL der root-Website. Innerhalb des Knotens werden alle Elemente, die definiert werden müssen, die für diese Websitesammlung. Wenn wir Sie brauchen, wir haben Zugriff auf die XML-Datei (die brauchen immer eine SPSecurity.RunWithElevatedPrivileges Zugriff auf Dateien direkt auf dem server) jedes mal, um es zu laden und die Daten abrufen. Es gibt eine Menge von automatisierten Verfahren, die dies tun haben, und ich bin zögerlich über die Stabilität dieser Methode, wenn wir Hunderte von Websites mit tausenden von Dateien laufen Zehntausende von workflows, alle wollen, den Zugriff auf diese Datei. Vielleicht sind Sie unbegründet sorgen, aber ich würde mich eher beunruhigen als das Risiko einzugehen, alles zu brechen, in ein paar Jahren.
Suchte ich in der SPWeb-Objekt und fand den AllProperties
hashtable. Es sieht aus wie genau die Art von Sache, die funktionieren könnte, aber ich weiß nicht, wie sicher es ist, ändern dieser. Ich lese über die beiden MSDN-und WSS SDK, aber nichts gefunden, was verdeutlicht, die auf das hinzufügen von völlig neuen Eigenschaften in AllProperties
. Ist es sicher zu bedienen AllProperties
für diese Art der Sache? Oder gibt es noch ein weiteres feature, das ich vermisse, das könnte Griff das Konzept der globalen Variablen, auf die Websitesammlung oder Website-Bereich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist der empfohlene Weg, dies zu tun ist, um PropertyBag verwenden (Schlüssel/Wert-Paare) durch die .Eigenschaften von SPFarm, SPWeb.RootWeb (für Websitesammlungen), SPWeb, SPList, etc (je nach Bereich, den Sie brauchen).
MSDN - das Verwalten von Benutzerdefinierten Einstelloptionen, die für eine SharePoint-Anwendung
Es ist ein production-ready code als Teil der
MSDN - Der SharePoint Guidance Library
Sehen Hierarchische Konfigurations-manager
Diese erhalten Sie programmgesteuerten Zugriff auf Lesen/schreiben dieser Werte. Wenn Sie möchten, dies zu tun, ohne mit der Leitung der Bibliothek ist, dann würden Sie so etwas wie den folgenden code.
Wenn Sie möchten, eine Benutzeroberfläche zu ermöglichen admins zum einfachen einstellen der Werte verwenden Sie dann entweder SharePoint Designer (urghhhh!) oder so etwas wie SharePoint-Property-Bag-Einstellungen
Propertybag kann verwendet werden zum speichern von Schlüssel/Wert-Typ-Eigenschaften. Ich denke, es ist gemeint für das, was Ihre Zwecke zu sein scheinen.
Persönlich habe ich mehr Notwendigkeit cross-site-collection-Eigenschaften (wie db-Verbindungs-strings) und ich benutze diese zum speichern.
Ich verwendet http://pbs.codeplex.com/