أزور :هل يمكننا التحقق من وجود الإعداد قبل محاولة قراءته؟

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

سؤال

أستخدم حاليًا RoleEnvironment.GetConfigurationSettingValue(propertyName) للحصول على قيمة الإعداد المحدد في ملف تكوين WebRole الخاص بي (csdef + cscfg).حسنا، يبدو صحيحا.

يعمل هذا بشكل جيد إذا كان الإعداد موجودًا ولكنه فشل مع استثناء إذا لم يتم تعريف الإعداد في ملف csdef وcscfg.

أقوم بترحيل تطبيق موجود إلى Azure والذي يحتوي على العديد من إعدادات التكوين في web.config.في الكود الخاص بي، لقراءة قيمة الإعداد، أود اختبار:إذا كان موجودًا في تكوين webRole (csdef + cscfg) قرأته من هنا، وإلا قرأته باستخدام ConfigurationManager من web.config.قد يؤدي هذا إلى منع ترحيل جميع الإعدادات من web.config الخاص بي والسماح بتخصيص إعدادات عند نشر التطبيق بالفعل.

هل هناك طريقة للقيام بذلك ؟

لا أريد تغليف GetConfigurationSettingValue في محاولة/التقاط (واقرأ من web.config إذا قمت بإدخال الالتقاط) لأنها طريقة قبيحة حقًا (وغالبًا ما تكون غير فعالة في الأداء!).

شكرًا !

هل كانت مفيدة؟

المحلول

تحديث لـ 1.7 Azure SDK.تم تقديم فئة CloudConfigurationManager.يسمح بمكالمة GetSetting واحدة للبحث في ملف cscfg أولاً ثم الرجوع إلى web.config إذا لم يتم العثور على المفتاح.

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

قبل 1.7 SDK الإجابة البسيطة هي لا.(الذي أعرفه)

الموضوع الأكثر إثارة للاهتمام هو اعتبار التكوين بمثابة تبعية.لقد وجدت أنه من المفيد التعامل مع إعدادات التكوين باعتبارها تبعية بحيث يمكن تغيير تنفيذ الدعم بمرور الوقت.قد يكون هذا التنفيذ مزيفًا للاختبار أو شيئًا أكثر تعقيدًا مثل التبديل منه .التكوين/.cscfg لتنفيذ قاعدة بيانات لحلول متعددة Tennent.

بالنظر إلى غلاف التكوين هذا، يمكنك كتابة TryGetSetting كأسلوب داخلي لأي مصدر لخيارات التكوين لديك.عند إضافة هذه الميزة إلى أعضاء RoleEnvironment، سيكون عليك فقط تغيير هذا التنفيذ الداخلي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top