c# - قراءة الإعدادات من app.config أو web.config في.net




appsettings (13)

أنصحك بشدة بإنشاء التفاف لهذه المكالمة. شيء مثل ConfigurationReaderService واستخدام حق التبعية للحصول على هذه الفئة. بهذه الطريقة ستتمكن من عزل ملفات التكوين هذه لأغراض الاختبار.

لذا استخدم ConfigurationManager.AppSettings["something"]; اقترح وإرجاع هذه القيمة. يمكنك باستخدام هذا الأسلوب إنشاء نوع من الإرجاع الافتراضي إذا لم يكن هناك مفتاح متوفر في ملف .config.

أعمل على مكتبة فئة C # تحتاج إلى قراءة الإعدادات من ملف web.config أو app.config (اعتمادًا على ما إذا كان يتم الرجوع إلى DLL من تطبيق ويب ASP.NET أو تطبيق Windows Forms).

لقد وجدت ذلك

ConfigurationSettings.AppSettings.Get("MySetting")

يعمل ، لكن تم وضع علامة على هذا الرمز على أنه تم إيقافه بواسطة Microsoft.

قرأت أنني يجب أن أستخدم:

ConfigurationManager.AppSettings["MySetting"]

ومع ذلك ، لا يبدو فئة System.Configuration.ConfigurationManager متوفرة من مشروع مكتبة Class C #.

هل يعرف أحد ما أفضل طريقة للقيام بذلك؟


أيضًا ، يمكنك استخدام formo :

التكوين:

<appSettings>
    <add key="RetryAttempts" value="5" />
    <add key="ApplicationBuildDate" value="11/4/1999 6:23 AM" />
</appSettings>

الشفرة:

dynamic config = new Configuration();
var retryAttempts1 = config.RetryAttempts;                 // returns 5 as a string
var retryAttempts2 = config.RetryAttempts(10);             // returns 5 if found in config, else 10
var retryAttempts3 = config.RetryAttempts(userInput, 10);  // returns 5 if it exists in config, else userInput if not null, else 10
var appBuildDate = config.ApplicationBuildDate<DateTime>();

انقر بزر الماوس الأيمن على مكتبة الفصل ، واختر خيار "إضافة المراجع" من القائمة ؛ وأخيرًا من علامة التبويب .NET ، حدد System.Configuration. يتضمن ذلك System.Configuration dll في المشروع الخاص بك.


ايم باستخدام هذا ويعمل بشكل جيد بالنسبة لي

textBox1.Text = ConfigurationManager.AppSettings["Name"];

جرب هذا:

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

في web.config يجب أن يكون الهيكل التالي:

<configuration>
<appSettings>
<add key="keyname" value="keyvalue" />
</appSettings>
</configuration>

حل آخر ممكن:

var MyReader = new System.Configuration.AppSettingsReader();
string keyvalue = MyReader.GetValue("keyalue",typeof(string)).ToString();

ستحتاج إلى إضافة مرجع إلى System.Configuration في مجلد مراجع المشروع.

يجب عليك بالتأكيد استخدام ConfigurationManager عبر إعدادات ConfigurationSettings القديمة.


على سبيل المثال:

<applicationSettings>
        <MyApp.My.MySettings>
            <setting name="Printer" serializeAs="String">
                <value>1234 </value>
            </setting>
        </MyApp.My.MySettings>
    </applicationSettings>
Dim strPrinterName as string= My.settings.Printer

قد تكون إضافة ملف App.config إلى DLL. يعمل App.Config فقط للمشروعات القابلة للتنفيذ ، نظرًا لأن كافة dll تأخذ التكوين من ملف التكوين لـ exe الجاري تنفيذه.

لنفترض أنك تمتلك مشروعين في حلك:

  • SomeDll
  • SomeExe

قد تتكرر مشكلتك إلى حقيقة أنك تقوم بتضمين app.config إلى SomeDLL وليس SomeExe. SomeDll قادر على قراءة التكوين من مشروع SomeExe.


كما وجدت أفضل نهج للوصول إلى متغيرات إعدادات التطبيق بطريقة منهجية عن طريق جعل فئة المجمع على System.Configuration على النحو التالي

public class BaseConfiguration
    {
        protected static object GetAppSetting(Type expectedType, string key)
        {
            string value = ConfigurationManager.AppSettings.Get(key);
            try
            {
                if (expectedType == typeof(int))
                    return int.Parse(value);
                if (expectedType == typeof(string))
                    return value;

                throw new Exception("Type not supported.");
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Config key:{0} was expected to be of type {1} but was not.",
                    key, expectedType), ex);
            }
        }
    }

الآن يمكننا الوصول إلى متغيرات الإعدادات المطلوبة بأسماء مشفرة باستخدام فئة أخرى على النحو التالي

public class ConfigurationSettings:BaseConfiguration
    {
        #region App setting

        public static string ApplicationName
        {
            get { return (string)GetAppSetting(typeof(string), "ApplicationName"); }
        }

        public static string MailBccAddress
        {
            get { return (string)GetAppSetting(typeof(string), "MailBccAddress"); }
        }

        public static string DefaultConnection
        {
            get { return (string)GetAppSetting(typeof(string), "DefaultConnection"); }
        }

        #endregion App setting

        #region global setting



        #endregion global setting
    }

للحصول على عينة App.config مثل أدناه:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="countoffiles" value="7" />
    <add key="logfilelocation" value="abc.txt" />
  </appSettings>
</configuration>

تقرأ إعدادات التطبيق المذكورة أعلاه باستخدام الكود المعروض أدناه:

using System.Configuration;

قد تحتاج أيضًا إلى إضافة مرجع إلى System.Configuration في مشروعك إذا لم يكن هناك واحد بالفعل. يمكنك بعد ذلك الوصول إلى القيم مثل:

string configvalue1 = ConfigurationManager.AppSettings["countoffiles"];
string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];

أتمنى أن يساعدك هذا!


واجهت نفس المشكلة ، فقط اقرأها بهذه الطريقة:

System.Configuration.ConfigurationSettings.AppSettings["MySetting"]

يجب إضافة إلى المشروع مرجع إلى تجميع System.Configuration.







appsettings