কিভাবে সম্ভাব্য শিশু উপাদান এবং বৈশিষ্ট্যের বৈশিষ্ট্যাবলী সহ কাস্টম web.config বিভাগগুলিকে আমি সংজ্ঞায়িত করব?

বিকাশকৃত ওয়েব অ্যাপ্লিকেশনগুলি প্রায়ই সহ-নির্ভর কনফিগারেশন সেটিংস প্রয়োজন এবং সেটিংসও রয়েছে যা আমাদের প্রতিটি পরিবেশের মধ্যে স্থানান্তর করে

আমাদের সব সেটিংস বর্তমানে সহজ কী মান জোড়া কিন্তু কাস্টম কনফিগারেশন বিভাগগুলি তৈরি করার জন্য এটি উপযুক্ত হবে যাতে এটি সুস্পষ্ট হয় যখন দুইটি মান একসাথে পরিবর্তন করতে হবে বা সেটিংসকে পরিবেশের জন্য পরিবর্তন করতে হবে।

কাস্টম কনফিগারেশন বিভাগগুলি তৈরি করার সর্বোত্তম উপায় কী এবং মূল্যগুলি পুনরুদ্ধার করার জন্য কোন বিশেষ বিবেচ্য বিষয় রয়েছে?

0
ro fr hi

5 উত্তর

অ্যাট্রিবিউটস, চাইল্ড কনফিগ বিভাগ এবং সীমাবদ্ধতাগুলি ব্যবহার করা

বৈশিষ্ট্যগুলি ব্যবহার করার সম্ভাবনা রয়েছে যা স্বয়ংক্রিয়ভাবে প্লাম্বার যত্ন নেবে, পাশাপাশি সহজেই সীমাবদ্ধতা যোগ করার ক্ষমতা প্রদান করবে।

আমি এখানে কোড থেকে একটি উদাহরণ উপস্থাপন আমি নিজেকে আমার সাইট এক ব্যবহার। একটি সীমাবদ্ধতার সঙ্গে আমি কোনও একক ব্যবহারকারীর ব্যবহার করার জন্য অনুমতিপ্রাপ্ত ডিস্ক স্পেসের সর্বোচ্চ পরিমাণ নির্দেশ করে।

MailCenterConfiguration.cs:

namespace Ani {

    public sealed class MailCenterConfiguration : ConfigurationSection
    {
        [ConfigurationProperty("userDiskSpace", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 1000000)]
        public int UserDiskSpace
        {
            get { return (int)base["userDiskSpace"]; }
            set { base["userDiskSpace"] = value; }
        }
    }
}

এটি web.config এ তাই সেট আপ করা হয়


    <!-- Mailcenter configuration file -->
    
...

    

শিশু উপাদান

চাইল্ড এক্সএমএল এলিমেন্ট মেইল ​​ একই .cs ফাইলের উপরে একটি হিসাবে তৈরি করা হয়। এখানে আমি পোর্টে সীমাবদ্ধতা যুক্ত করেছি। যদি পোর্টটি এই পরিসরে একটি মান না দেওয়া হয় তবে কনফিগার লোড হওয়ার সময় রানটাইম অভিযোগ করবে।

MailCenterConfiguration.cs:

public sealed class MailCenterConfiguration : ConfigurationSection
{
    [ConfigurationProperty("mail", IsRequired=true)]
    public MailElement Mail
    {
        get { return (MailElement)base["mail"]; }
        set { base["mail"] = value; }
    }

    public class MailElement : ConfigurationElement
    {
        [ConfigurationProperty("host", IsRequired = true)]
        public string Host
        {
            get { return (string)base["host"]; }
            set { base["host"] = value; }
        }

        [ConfigurationProperty("port", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 65535)]
        public int Port
        {
            get { return (int)base["port"]; }
            set { base["port"] = value; }
        }

এ ব্যবহার করুন

এটি কার্যকরীভাবে কোডে ব্যবহার করার জন্য, আপনাকে যা করতে হবে তা হল MailCenterConfigurationObject এর তাত্পর্যপূর্ণ, এটি স্বয়ংক্রিয়ভাবে web.config থেকে প্রাসঙ্গিক বিভাগগুলি পড়বে।

MailCenterConfiguration.cs

private static MailCenterConfiguration instance = null;
public static MailCenterConfiguration Instance
{
    get
    {
        if (instance == null)
        {
            instance = (MailCenterConfiguration)WebConfigurationManager.GetSection("mailCenter");
        }

        return instance;
    }
}

AnotherFile.cs

public void SendMail()
{
    MailCenterConfiguration conf = MailCenterConfiguration.Instance;
    SmtpClient smtpClient = new SmtpClient(conf.Mail.Host, conf.Mail.Port);
}

বৈধতা যাচাই করুন

আমি পূর্বে উল্লিখিত যে রানটাইমটি যখন কনফিগারেশনটি লোড হবে তখন অভিযোগ করবে এবং কিছু ডেটা আপনার সেট করা নিয়মগুলির (যেমন MailCenterConfiguration.cs তে) মেনে চলবে না। আমি যতটা সম্ভব যত তাড়াতাড়ি আমার সাইট আপ পোড়া যখন এই জিনিস জানতে চান। এই সমাধান করার একটি উপায় _Global.asax.cx.Application_Start_- এ কনফিগারেশন লোড করা হয়, যদি কনফিগারেশনটি অবৈধ থাকে তবে এটি একটি ব্যতিক্রমের মাধ্যম দ্বারা বিজ্ঞাপিত হবে। আপনার সাইটটি শুরু হবে না এবং এর পরিবর্তে মৃত্যুদন্ডের হলুদ পর্দা

Global.asax.cs

protected void Application_ Start(object sender, EventArgs e)
{
    MailCenterConfiguration.Instance;
}
0
যোগ
যদি আপনি একাধিক শিশু উপাদান আশা করেন তবে আপনি কিভাবে কোডটি পরিবর্তন করবেন?
যোগ লেখক Kevin Le - Khnle, উৎস

কুইন'স ডার্টি:

প্রথমে আপনার কনফারেন্সেশন বিভাগ এবং কনফিগারেশনএলেমেন্ট ক্লাস তৈরি করুন:

public class MyStuffSection : ConfigurationSection
{
    ConfigurationProperty _MyStuffElement;

    public MyStuffSection()
    {
        _MyStuffElement = new ConfigurationProperty("MyStuff", typeof(MyStuffElement), null);

        this.Properties.Add(_MyStuffElement);
    }

    public MyStuffElement MyStuff
    {
        get
        {
            return this[_MyStuffElement] as MyStuffElement;
        }
    }
}

public class MyStuffElement : ConfigurationElement
{
    ConfigurationProperty _SomeStuff;

    public MyStuffElement()
    {
        _SomeStuff = new ConfigurationProperty("SomeStuff", typeof(string), "");

        this.Properties.Add(_SomeStuff);
    }

    public string SomeStuff
    {
        get
        {
            return (String)this[_SomeStuff];
        }
    }
}

তারপর কাঠামোটিকে আপনার কনফিগারেশন ক্লাসগুলিকে web.config এ কিভাবে পরিচালনা করতে হয় তা জানান:


  
    
  
  ...

এবং আসলে নীচের আপনার নিজের বিভাগ যোগ করুন:

  
    
  

তারপর আপনি এটি আপনার কোড এইভাবে ব্যবহার করতে পারেন:

MyWeb.Configuration.MyStuffSection configSection = ConfigurationManager.GetSection("MyStuffSection") as MyWeb.Configuration.MyStuffSection;

if (configSection != null && configSection.MyStuff != null)
{
    Response.Write(configSection.MyStuff.SomeStuff);
}
0
যোগ

আপনি এই অংশ হ্যান্ডলারগুলির সাথে এটি সম্পন্ন করতে পারেন। http://www.codeproject.com এ কীভাবে লিখতে হয় তা একটি মৌলিক বিশদ আছে /KB/aspnet/ConfigSections.aspx তবে এটি app.config উল্লেখ করে যা web.config- এ ব্যবহারের জন্য একটি লেখার মতই হবে। এটি আপনাকে মূলত কনফিগার ফাইলে নিজের এক্সএমএল ট্রি হতে দেবে এবং আরও উন্নত কনফিগারেশন করবে।

0
যোগ

ConfigurationCollection ব্যবহার করে একটি চমৎকার MSDN এর উদাহরণ রয়েছে এবং web.config- এ কাস্টম বিভাগগুলির জন্য .NET 4.5 টি কনফিগ আইটেমগুলির একটি তালিকা রয়েছে।

0
যোগ

The most simple method, which I found, is using appSettings section.

  1. Add to Web.config the following:

    
        
    
    
  2. Access from your code

    NameValueCollection appSettings = ConfigurationManager.AppSettings;
    string myPropVal = appSettings["MyProp"];
    
0
যোগ