2017-10-23 1 views
0

Ich möchte die gepatchten Attribute in Sitecore.ItemWebApi.config lesen, um festzustellen, ob die Sitecore-Objekt-API in meiner Site aktiviert ist. Dieser Wert, nach dem ich suche, ist itemwebapi.mode, und ich möchte sehen, ob er auf 'Off' gestellt ist oder nicht.Patch-Attributwerte aus Konfigurationsdateien lesen?

<site name="mysite"> 
    <patch:attribute name="itemwebapi.mode">StandardSecurity</patch:attribute> 
    <patch:attribute name="itemwebapi.access">ReadOnly</patch:attribute> 
    <patch:attribute name="itemwebapi.allowanonymousaccess">false</patch:attribute> 
</site> 

Ich versuchte, ConfigurationManager.AppSettings["itemwebapi.mode"] zu erhalten, aber es gibt Null zurück. Wie bekomme ich diesen Wert?

Antwort

0

Ich denke, Sie müssen Sitecore-Konfiguration Fabrik verwenden, um die Konfiguration Zeug zu lesen. (http://sitecore-community.github.io/docs/documentation/Sitecore%20Fundamentals/Sitecore%20Configuration%20Factory/#config_factory)

Versuchen Sie wie folgt. Wenn nicht, experimentiere auf ähnliche Weise.

var refObj = Sitecore.Configuration.Factory.CreateObject("site/patch:attribute", true) as itemwebapi.mode; 

Wenn nicht nützlich, geben Sie einen Kommentar ein. Ich werde es löschen.

0

Sie können auf die Attribute im Site-Knoten zugreifen, indem Sie den Properties Accessor verwenden, Wenn das Attribut nicht festgelegt ist, ist der Wert leer. Für den aktuellen Standort Kontext:

string mode = Sitecore.Context.Site.Properties["itemwebapi.mode"]; 
string access = Sitecore.Context.Site.Properties["itemwebapi.access"]; 
string anon = Sitecore.Context.Site.Properties["itemwebapi.allowanonymousaccess"]; 

Wenn Sie innerhalb einer ItemWebApi Anfrage werden überprüft (beginnend mit -/item/), dann können Sie prüfen, die ItemWebApi.Context:

if (Sitecore.ItemWebApi.Context.Current != null) 
{ 
    Mode mode = Sitecore.ItemWebApi.Context.Current.Settings.Mode; 
    AccessType access = Sitecore.ItemWebApi.Context.Current.Settings.Access; 
    bool anon = Sitecore.ItemWebApi.Context.Current.Settings.AnonymousAcessAllowed; 
} 

Dies wird Ihnen dringend Zugriff auf die Einstellungen eingegeben Verwenden von Enums. Leider ist der überladene Konstruktor für RuntimeSettings() als intern markiert, so dass es nicht möglich ist, dies selbst in einer normalen Webanfrage neu zu erstellen, sondern den Code überprüfen und etwas ähnliches tun könnte, wenn Sie es benötigen.

Verwandte Themen