c# - App.config বা web.config থেকে সেটিংস পড়া.net




configuration appsettings (14)

Pls চেক করুন। নেট সংস্করণ আপনি কাজ করছেন। এটি 4 এর চেয়ে বেশি হওয়া উচিত এবং আপনাকে আপনার অ্যাপ্লিকেশনটিতে System.Configuration সিস্টেম লাইব্রেরি যোগ করতে হবে

আমি একটি সি # বর্গ গ্রন্থাগারে কাজ করছি যা ওয়েব. app.config অথবা app.config ফাইল থেকে সেটিংস পড়তে সক্ষম হওয়া দরকার (এটি একটি ASP.NET ওয়েব অ্যাপ্লিকেশন বা উইন্ডোজ ফর্ম অ্যাপ্লিকেশন থেকে রেফারেন্স করা হয়েছে কিনা তার উপর নির্ভর করে)।

আমি যে খুঁজে পেয়েছেন

ConfigurationSettings.AppSettings.Get("MySetting")

কাজ করে, তবে সেই কোডটি মাইক্রোসফ্ট দ্বারা অব্যবহৃত হিসাবে চিহ্নিত করা হয়েছে।

আমি পড়েছি যে আমি ব্যবহার করা উচিত:

ConfigurationManager.AppSettings["MySetting"]

যাইহোক, System.Configuration.ConfigurationManager ক্লাস একটি C # ক্লাস লাইব্রেরী প্রকল্প থেকে উপলব্ধ বলে মনে হচ্ছে না।

কেউ কি এই কাজ করার সেরা উপায় জানেন?


আপনাকে আপনার প্রকল্পের রেফারেন্স ফোল্ডারে System.Configurationএকটি রেফারেন্স যুক্ত করতে হবে।

আপনি স্পষ্টভাবে অপ্রচলিত ConfigurationSettings সেটিংসে ConfigurationSettings ম্যানেজার ব্যবহার করা উচিত।


আপনি একটি DLL এ App.config ফাইল যোগ করা হতে পারে। App.Config শুধুমাত্র এক্সিকিউটেবল প্রকল্পের জন্য কাজ করে, যেহেতু সমস্ত dll কনফিগারেশন ফাইল থেকে কনফিগারেশন ফাইলটি এক্সিকিউট করা হয়।

আপনি আপনার সমাধান দুটি প্রকল্প আছে বলুন:

  • SomeDll
  • SomeExe

আপনার সমস্যাটি আপনি SomeDLL এ অ্যাপ্লিকেশন.config সহ কিছুক্ষেত্রে কিছুক্ষেত্রে প্রকাশ করা যেতে পারে। SomeDll SomeExe প্রকল্প থেকে কনফিগারেশন পড়তে সক্ষম।


আপনি প্রকল্পের একটি রেফারেন্স যোগ করা আবশ্যক। কনফিগারেশন সমাবেশ।


আমি একই সমস্যা ছিল, শুধু এই ভাবে তাদের পড়তে:

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

আমি এখন কয়েক দিনের জন্য এই একই সমস্যা জন্য একটি ফিক্স খুঁজে বের করার চেষ্টা করা হয়েছে। আমি web.config এ অ্যাপসেটিং ট্যাগের মধ্যে একটি কী যুক্ত করে এটি সমাধান করতে সক্ষম হয়েছিলাম। সাহায্যকারী ব্যবহার করার সময় এটি .dll ওভাররাইড করা উচিত।

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

আমি সর্বদা কনফিগারেশন মানগুলির জন্য ঘোষিত typesafe বৈশিষ্ট্যের সাথে একটি IConfig ইন্টারফেস তৈরি করি। একটি কনফিগারেশন বাস্তবায়ন ক্লাস তারপর কলগুলিতে সিস্টেমকে রুপান্তর করে। কনফিগারেশন। আপনার সমস্ত সিস্টেম। কনফিগারেশন কলগুলি এক জায়গায় এখন এত সহজ এবং ক্লিনার বজায় রাখা এবং ট্র্যাক করা যা ক্ষেত্রগুলি ব্যবহার করা হচ্ছে এবং তাদের ডিফল্ট মানগুলি ঘোষণা করে। আমি সাধারণ তথ্য প্রকার পড়তে এবং বিশ্লেষণ করার জন্য ব্যক্তিগত সহায়ক পদ্ধতির একটি সেট লিখি।

একটি আইওসি ফ্রেমওয়ার্ক ব্যবহার করে আপনি কেবল একটি ক্লাস কনস্ট্রাক্টরকে ইন্টারফেস পাশ করে আইকনফিগের যে কোনও জায়গায় আপনার অ্যাপ্লিকেশানে অ্যাক্সেস করতে পারেন। এছাড়াও আপনি আপনার ইউনিট পরীক্ষাগুলিতে IConfig ইন্টারফেসের mock বাস্তবায়ন তৈরি করতে সক্ষম হয়েছেন যাতে আপনি এখন আপনার অ্যাপ্লিকেশন কনফিগারেশন বা ওয়েব.config ফাইলটি স্পর্শ না করে বিভিন্ন কনফিগারেশন মান এবং মান সমন্বয়গুলি পরীক্ষা করতে পারেন।


আরেকটি সম্ভাব্য সমাধান:

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

এটা চেষ্টা কর:

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

ওয়েব.config পরবর্তী কাঠামো হতে হবে:

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

কনফিগ থেকে পড়ুন:

আপনি কনফিগ একটি রেফারেন্স যোগ করতে হবে

  1. আপনার প্রকল্পে "সম্পত্তি" খুলুন
  2. "সেটিংস" ট্যাবে যান
  3. "নাম" এবং "মান" যুক্ত করুন
  4. নিম্নলিখিত কোড ব্যবহার করে মান পান:

    স্ট্রিং মান = Properties.Settings.Default.keyname;

কনফিগ এ সংরক্ষণ করুন:

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

পদক্ষেপ 1: রেফারেন্স যুক্ত করতে রেফারেন্স ট্যাবে ডান-ক্লিক করুন।

পদক্ষেপ 2: অ্যাসেম্বলি ট্যাবে ক্লিক করুন

ধাপ 3: 'সিস্টেম। কনফিগারেশন' অনুসন্ধান করুন

পদক্ষেপ 4: ঠিক আছে ক্লিক করুন।

তারপর এটা কাজ করবে

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

প্রাক্তন জন্য:

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

শুধু সম্পূর্ণতার জন্য, কেবলমাত্র ওয়েব প্রোজেক্টগুলির জন্য উপলব্ধ অন্য একটি বিকল্প রয়েছে:

System.Web.Configuration.WebConfigurationManager.AppSettings["MySetting"]

এর সুবিধার কারণ এটি যোগ করার জন্য একটি অতিরিক্ত রেফারেন্স প্রয়োজন হয় না তাই কিছু মানুষের জন্য ভাল হতে পারে।


সিস্টেমের উপর একটি মোড়ক বর্গ তৈরি করে পদ্ধতিগত ভাবে অ্যাপ্লিকেশন সেটিং ভেরিয়েবলগুলি অ্যাক্সেস করার জন্য আমি সর্বোত্তম পদ্ধতি খুঁজে পেয়েছি। নীচের মতো কনফিগারেশন

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
    }




appsettings