c# .net में app.config या web.config से सेटिंग पढ़ना




appsettings (16)

मैं एक सी # कक्षा पुस्तकालय पर काम कर रहा हूं जिसे web.config या app.config फ़ाइल से सेटिंग्स को पढ़ने में सक्षम होना चाहिए (इस पर निर्भर करता है कि डीएलएल को एएसपी.नेट वेब एप्लिकेशन या विंडोज फॉर्म एप्लिकेशन से संदर्भित किया गया है या नहीं)।

मैंने पाया है

ConfigurationSettings.AppSettings.Get("MySetting")

काम करता है, लेकिन उस कोड को माइक्रोसॉफ्ट द्वारा बहिष्कृत के रूप में चिह्नित किया गया है।

मैंने पढ़ा है कि मुझे इसका उपयोग करना चाहिए:

ConfigurationManager.AppSettings["MySetting"]

हालांकि, System.Configuration.ConfigurationManager क्लास सी # क्लास लाइब्रेरी प्रोजेक्ट से उपलब्ध प्रतीत नहीं होता है।

क्या किसी को पता है कि ऐसा करने का सबसे अच्छा तरीका क्या है?


कॉन्फ़िगर से पढ़ें:

आपको कॉन्फ़िगरेशन का संदर्भ जोड़ना होगा

  1. अपनी परियोजना पर "गुण" खोलें
  2. "सेटिंग्स" टैब पर जाएं
  3. "नाम" और "मूल्य" जोड़ें
  4. निम्नलिखित कोड का उपयोग कर मूल्य प्राप्त करें:

    स्ट्रिंग मान = Properties.Settings.Default.keyname;

कॉन्फ़िगर में सहेजें:

   Properties.Settings.Default.keyName = value;
   Properties.Settings.Default.Save();

मुझे एक ही समस्या थी, बस उन्हें इस तरह पढ़ें:

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

मैं इसका उपयोग कर रहा हूं और यह मेरे लिए अच्छा काम करता है

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

आपको अपने प्रोजेक्ट के संदर्भ फ़ोल्डर में System.ConfigurationSystem.Configuration संदर्भ जोड़ना होगा।

आपको अप्रचलित ConfigurationSettings ConfigurationManager पर निश्चित रूप से ConfigurationManager का उपयोग करना चाहिए।


एक और संभावित समाधान:

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

इसके अलावा, आप 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>();

मैं इस मुद्दे के लिए कुछ दिनों के लिए एक फिक्स खोजने की कोशिश कर रहा हूं। मैं web.config में एप्सेटिंग टैग के भीतर एक कुंजी जोड़कर इसे हल करने में सक्षम था। सहायक का उपयोग करते समय यह .dll को ओवरराइड करना चाहिए।

<configuration>
<appSettings>
<add key="loginUrl" value="~/RedirectValue.cshtml" />
<add key="autoFormsAuthentication" value="false"/>
</appSettings>
</configuration>

इसे इस्तेमाल करे:

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

Web.config में अगली संरचना होनी चाहिए:

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

आपको प्रोजेक्ट में सिस्टम के संदर्भ में जोड़ना होगा। कॉन्फ़िगरेशन असेंबली।


मैं हमेशा सभी कॉन्फ़िगरेशन मानों के लिए घोषित टाइपएफ़ गुणों के साथ एक आईकोनफिग इंटरफ़ेस बना देता हूं। एक कॉन्फ़िगरेशन कार्यान्वयन कक्षा तब सिस्टम को कॉल को लपेटती है। कॉन्फ़िगरेशन। आपके सभी सिस्टम। कॉन्फ़िगरेशन कॉल अब एक ही स्थान पर हैं ताकि बनाए रखने और ट्रैक करने के लिए कितने आसान और क्लीनर का उपयोग किया जा रहा है और उनके डिफ़ॉल्ट मान घोषित कर रहे हैं। मैं सामान्य डेटा प्रकारों को पढ़ने और विश्लेषण करने के लिए निजी सहायक विधियों का एक सेट लिखता हूं।

एक आईओसी ढांचे का उपयोग करके आप एक वर्ग कन्स्ट्रक्टर को इंटरफ़ेस पास करके बस अपने ऐप में आईकोनफिग फ़ील्ड तक पहुंच सकते हैं। फिर भी आप अपने यूनिट परीक्षणों में आईकोनफिग इंटरफेस के नकली कार्यान्वयन को बनाने में सक्षम हैं ताकि आप अब अपने App.config या Web.config फ़ाइल को छूने के बिना विभिन्न कॉन्फ़िगरेशन मानों और मूल्य संयोजनों का परीक्षण कर सकें।


अपनी कक्षा लाइब्रेरी पर राइट क्लिक करें, और मेनू से "संदर्भ जोड़ें" विकल्प चुनें; और अंततः .NET टैब से, सिस्टम का चयन करें। कॉन्फ़िगरेशन। इसमें सिस्टम शामिल होगा। कॉन्फ़िगरेशन डीएल आपकी परियोजना में।


ढांचे 4.5 और 4.6 के लिए अद्यतन; निम्नलिखित काम नहीं करेंगे:

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

अब गुणों के माध्यम से सेटिंग क्लास तक पहुंचें:

string keyvalue= Properties.Settings.Default.keyname;

अधिक जानकारी के लिए प्रबंधन अनुप्रयोग सेटिंग्स देखें।


मैं आपको इस कॉल के लिए एक रैपर बनाने की दृढ़ता से अनुशंसा करता हूं। ConfigurationReaderService रीडर सेवा जैसी कुछ और इस वर्ग को प्राप्त करने के लिए निर्भरता इंजेक्शन का उपयोग करें। इस तरह आप परीक्षण उद्देश्यों के लिए इस कॉन्फ़िगरेशन फ़ाइलों को अलग करने में सक्षम होंगे।

तो ConfigurationManager.AppSettings["something"]; सुझाव दिया और इस मूल्य को वापस कर दिया। यदि .config फ़ाइल में कोई कुंजी उपलब्ध नहीं है तो आप इस विधि के साथ किसी प्रकार की डिफ़ॉल्ट वापसी कर सकते हैं।


पूर्व के लिए:

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

जैसा कि मैंने सिस्टम पर एक रैपर वर्ग बनाकर व्यवस्थित तरीके से ऐप सेटिंग्स चरों तक पहुंचने के लिए सबसे अच्छा तरीका पाया है। नीचे कॉन्फ़िगरेशन

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;

आपको सिस्टम के संदर्भ में भी एक संदर्भ जोड़ने की आवश्यकता हो सकती है। अगर आपके पास पहले से कोई नहीं है तो कॉन्फ़िगरेशन। फिर आप इस तरह के मानों तक पहुंच सकते हैं:

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

उम्मीद है की यह मदद करेगा!







appsettings