সি # (.নেট) দিয়ে প্রোগ্রামিয়ালি একটি ওয়েবকনফিগ পরিবর্তন করুন


93

আমি কীভাবে web.configসি # দিয়ে প্রোগ্রামটিমেটিকভাবে পরিবর্তন / পরিচালনা করতে পারি ? আমি কি একটি কনফিগারেশন অবজেক্ট ব্যবহার করতে পারি, এবং হ্যাঁ, আমি কীভাবে web.configএকটি কনফিগারেশন অবজেক্টে লোড করব ? আমি সংযোগের স্ট্রিং পরিবর্তন করার একটি সম্পূর্ণ উদাহরণ পেতে চাই। পরিবর্তনের পরে web.configহার্ডডিস্কে ফিরে লেখা উচিত।


কীভাবে প্রোগ্রামিংয়ে এএসপি.নেট ২.০ এবং এএসপি.নেট ৩.৫ এ ওয়েব কোডফিগ পরিচালনা করতে হবে তার ব্লগ পোস্টটি পরীক্ষা করে দেখুন বিকল্পভাবে এই প্রশ্নের যা আপনার প্রশ্নের উত্তর রয়েছে তা পরীক্ষা করে দেখুন। আমি কিভাবে নেট থেকে প্রোগ্রামে সংযোগের স্ট্রিং কনফিগার সেট করব?
শোবান

উত্তর:


115

এখানে এটি কিছু কোড:

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();

এই নিবন্ধে আরও উদাহরণ দেখুন , আপনাকে ছদ্মবেশে নজর দেওয়া প্রয়োজন হতে পারে ।


ওয়েবকনফিগ ফাইলটিতে আপনার সংযোগের স্ট্রিংয়ের নাম কী?
অ্যালেক্স এল ই

নিবন্ধের লিঙ্কটি নষ্ট হয়েছে
ভিটাল

@ অ্যাকলেস: ওয়েবকনফিগটি অন্য কোনও স্থানে রাখলে আমরা ফাইলের অবস্থানটি কীভাবে নির্দিষ্ট করব। ভাগ করা পথে দূরবর্তী সার্ভার হতে পারে?
শার্পকোডার

@ শার্পকোডার, পাথটি ভার্চুয়াল পাথ, সুতরাং আপনাকে প্রথমে ওয়েব কোডফাইগটি আপনার স্থানীয় অ্যাপ্লিকেশনটিতে রিমোট সার্ভার থেকে অনুলিপি করতে হবে (কোনও টেম্পোর ফোল্ডারের অভ্যন্তরে আপনার নিজের ওয়েবকনফিগকে ওভাররাইড না করার জন্য), সম্পাদনা করুন, সংরক্ষণ করুন এবং তারপরে ফিরে অনুলিপি করুন need রিমোট সার্ভারে। বা আরও ভাল, আরও জটিল সমাধানটি হ'ল: এমন একটি এপিআই তৈরি করুন যা ডি জব করে (ডিবেলকনফিগ পরিবর্তন করে), এটি রিমোট সার্ভারে স্থাপন এবং তারপরে এটি স্থানীয় সার্ভার থেকে গ্রাস করে।
গিলহর্ম ব্র্যাঙ্কো স্ট্রেসিনি

@ স্কামি আপনাকে অবশ্যই সংযোগসরিংয়ের নামটি "মাই সংযোগস্ট্রিং" এর সাথে সেট করতে হবে যার অর্থ বিভাগ রয়েছে on সংযোগসূত্রগুলি ["মাইকনেকশনস্ট্রিং"] নামের সাথে মিল থাকা উচিত।
লিয়াকত

12
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();

বিভাগের ভেরিয়েবল থেকে কীভাবে ব্যবহারকারীর আইডি পাবেন?
নাইস

5

যেহেতু ওয়েবকনফিগ ফাইলটি এক্সএমএল ফাইল, আপনি এক্সএমএলডোকোমেন্ট ক্লাস ব্যবহার করে ওয়েবকনফিগ খুলতে পারেন। আপনি যে xML ফাইলটি আপডেট করতে চান তা থেকে নোড পান এবং তারপরে xML ফাইলটি সংরক্ষণ করুন।

এখানে ইউআরএল রয়েছে যা আপনি কীভাবে প্রোগ্রাম থেকে ওয়েবকনফাইগ ফাইল আপডেট করতে পারবেন তার আরও বিশদে ব্যাখ্যা করে।

http://patelshalesh.com/index.php/update-web-config-programically

দ্রষ্টব্য: আপনি যদি ওয়েবকনফাইগে কোনও পরিবর্তন করেন তবে এএসপি.এনইটি সনাক্ত করে যে এটি পরিবর্তন করে এবং এটি আপনার অ্যাপ্লিকেশনটি পুনরায় লোড করবে (অ্যাপ্লিকেশন পুলের পুনর্ব্যবহার করবে) এবং এর ফলস্বরূপ সেশন, অ্যাপ্লিকেশন এবং ক্যাশে থাকা ডেটা হারাবে (সেশন স্থিতি ধরে রেখে) ইনপ্রোক এবং কোনও স্টেট সার্ভার বা ডাটাবেস ব্যবহার করছে না)।


আমি জানি যে এটি প্রযুক্তিগতভাবে সম্ভব, আমি মনে করি যে মাইক্রোসফ্ট দ্বারা অনুমোদিত / অনুমোদিত পদ্ধতিটি দীর্ঘকালীন এবং ওয়েবকনফিগ ভাঙ্গার পক্ষে কম বিষয় হতে পারে। আমরা এই ফাইলগুলি "হাত ধরে" আপডেট করেছি, তবে আমি মনে করি এটি প্রোডাকশন ওয়েব সার্ভারগুলির সাথে ঝুঁকিপূর্ণ। শুধু আমার 2 সি।
অ্যান্টনি হরনে

2

এটি এমন একটি পদ্ধতি যা আমি অ্যাপসেটেটিংগুলি আপডেট করতে ব্যবহার করি, ওয়েব এবং ডেস্কটপ অ্যাপ্লিকেশন উভয়ের জন্যই কাজ করে। আপনার যদি সংযোগসরিংগুলি সম্পাদনা করতে হয় তবে আপনি সেই মানটি পেতে পারেন System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];এবং এর সাথে একটি নতুন মান সেট করতে পারেন config.ConnectionString = "your connection string";। নোট করুন যে এগুলির connectionStringsবিভাগে আপনার কোনও মন্তব্য থাকলে Web.Configঅপসারণ করা হবে।

private void UpdateAppSettings(string key, string value)
{
    System.Configuration.Configuration configFile = null;
    if (System.Web.HttpContext.Current != null)
    {
        configFile =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
    }
    else
    {
        configFile =
            ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    }
    var settings = configFile.AppSettings.Settings;
    if (settings[key] == null)
    {
        settings.Add(key, value);
    }
    else
    {
        settings[key].Value = value;
    }
    configFile.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}

এই কোডটি ভাল এবং আমি এটির উন্নতি করেছি, তবে অ্যাপসেটেটিংগুলি অন্য কোনও ফাইলে সংজ্ঞায়িত করা থাকলে এটি কাজ করবে না, উদাহরণস্বরূপ: <অ্যাপসেটেটিং ফাইল = "সি: ent ক্লায়েন্ট \ কাস্টমসেটেটিংস কোডিং"> </ অ্যাপসেটেটিং>
বেন জুনিয়র
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.