Azure :können wir überprüfen, ob eine Einstellung vorhanden ist, bevor wir versuchen, sie zu lesen?

StackOverflow https://stackoverflow.com/questions/6018138

Frage

Ich benutze derzeit RoleEnvironment.GetConfigurationSettingValue(propertyName) um den Wert einer Einstellung zu erhalten, die in meiner WebRole-Konfigurationsdatei (csdef + cscfg) definiert ist.OK, hört sich richtig an.

Dies funktioniert gut, wenn die Einstellung vorhanden ist, aber mit einer Ausnahme fehlgeschlagen ist, wenn die Einstellung nicht in der csdef und der cscfg definiert ist.

Ich migriere eine vorhandene App nach Azure, die viele Konfigurationseinstellungen im Web enthält.konfig.Um in meinem Code einen Einstellwert zu lesen, möchte ich testen :wenn es in der WebRole-Konfiguration (csdef + cscfg) vorhanden ist, lese ich es von hier aus, ansonsten lese ich es mit dem Konfigurationsmanager aus dem Web.konfig.Dies würde verhindern, dass alle Einstellungen von meinem Web migriert werden.konfigurieren und erlauben Sie eine benutzerdefinierte, wenn die App bereits bereitgestellt ist.

Gibt es eine Möglichkeit, dies zu tun?

Ich möchte das nicht einkapseln GetConfigurationSettingValue in einem Versuch / Fang (und lesen von web.config, wenn ich den catch eingebe), weil es wirklich ein hässlicher Weg ist (und meistens ist es nicht leistungswirksam!).

Danke !

War es hilfreich?

Lösung

Update für 1.7 Azure SDK.Die CloudConfigurationManager-Klasse wurde eingeführt.Dies ermöglicht es einem einzelnen GetSetting-Aufruf, zuerst in Ihrem cscfg zu suchen und dann auf das Web zurückzugreifen.konfigurieren, wenn der Schlüssel nicht gefunden wird.

http://msdn.microsoft.com/en-us/LIBRARY/jj157248

SDK vor 1.7 Einfache Antwort ist nein.(Von dem ich weiß)

Das interessantere Thema ist, die Konfiguration als Abhängigkeit zu betrachten.Ich habe es als vorteilhaft empfunden, Konfigurationseinstellungen als Abhängigkeit zu behandeln, damit die Hintergrundimplementierung im Laufe der Zeit geändert werden kann.Diese Implementierung kann eine Fälschung zum Testen sein oder etwas Komplexeres wie das Wechseln von .konfiguration/.cscfg zu einer Datenbankimplementierung für Multi-Tenent-Lösungen.

Mit diesem Konfigurations-Wrapper können Sie dieses TryGetSetting als interne Methode für jede Quelle von Konfigurationsoptionen schreiben.Wenn diese Funktion zu den RoleEnvironment-Mitgliedern hinzugefügt wird, müssten Sie nur diese interne Implementierung ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top