আমি জানি এই প্রশ্নটি পুরানো, তবে আমি আমার বাস্তব বিশ্বের অভিজ্ঞতার সাথে মিলিত হয়ে এএসপি.নেট \ আইআইএস ওয়ার্ল্ডের বর্তমান অবস্থার ভিত্তিতে একটি উত্তর পোস্ট করতে চেয়েছিলাম।
আমি সম্প্রতি আমার সংস্থার এমন একটি প্রকল্পের নেতৃত্ব দিয়েছি যেখানে আমি আমাদের ওয়েবকনফিগ ফাইলগুলিতে একটি কেন্দ্রীয় স্থানে থাকা সমস্ত অ্যাপ্লিকেশন এবং সংযোগসার্টিংস সেটিংসকে একীভূত করতে ও পরিচালনা করতে চেয়েছিলাম। প্রকল্পগুলির পরিপক্কতা এবং স্থিতিশীলতার কারণে আমি এমন একটি পদ্ধতির অনুসরণ করতে চেয়েছিলাম যেখানে চিড়িয়াখানায় আমাদের কনফিগারেশন সেটিংস সংরক্ষণ করা হয়েছিল। চিড়িয়াখানার কনফিগারেশন এবং ক্লাস্টার পরিচালনার অ্যাপ্লিকেশনটি ডিজাইন করে তা উল্লেখ করার দরকার নেই।
প্রকল্পের লক্ষ্যগুলি খুব সাধারণ ছিল;
- চিড়িয়াখানার সাথে যোগাযোগের জন্য এএসপি.এনইটি পান
- গ্লোবাল.এক্সএক্স, অ্যাপ্লিকেশন_স্টার্টে - চিড়িয়াখানা থেকে ওয়েবকনফিগ সেটিংস টানুন।
চিড়িয়াখিরের সাথে কথা বলার জন্য এএসপি.এনইটি পাওয়ার প্রযুক্তিগত অংশটি পাস করার পরে, আমি দ্রুত নিম্নলিখিত কোডটি দিয়ে একটি প্রাচীরটি খুঁজে পেয়েছিলাম এবং হিট করেছি;
ConfigurationManager.AppSettings.Add(key_name, data_value)
আমি অ্যাপসেটেটিং সংগ্রহে নতুন সেটিংস যুক্ত করতে চেয়েছি বলে এই বিবৃতিটি সবচেয়ে যুক্তিযুক্ত বোধ তৈরি করেছে। যাইহোক, মূল পোস্টার হিসাবে (এবং আরও অনেক) উল্লিখিত, সংগ্রহটি কেবল পঠনযোগ্য বলে উল্লেখ করে এই কোড কলটি একটি ত্রুটি প্রদান করে।
কিছুটা গবেষণা করার পরে এবং লোকেদের এই সমস্যার চারপাশে কাজ করার বিভিন্ন উপায় দেখতে পেয়ে আমি খুব নিরুৎসাহিত হয়ে পড়েছিলাম। আদর্শ দৃশ্যের চেয়ে কম বলে মনে হয়েছিল তার জন্য হাল ছেড়ে দেওয়া বা স্থির করার পরিবর্তে, আমি খনন করে দেখার চেষ্টা করেছি যে আমি কিছু হারিয়ে যাচ্ছি কিনা।
একটি সামান্য পরীক্ষা এবং ত্রুটিযুক্ত হয়ে, আমি খুঁজে পেয়েছি যে নীচের কোডটি আমি যা চাইছিলাম ঠিক তাই করবে;
ConfigurationManager.AppSettings.Set(key_name, data_value)
কোডের এই লাইনটি ব্যবহার করে, আমি এখন আমার অ্যাপ্লিকেশন_স্টার্টে চিড়িয়াখানা থেকে সমস্ত 85 অ্যাপসেটেটিং কীগুলি লোড করতে সক্ষম হয়েছি।
আইআইএস পুনর্ব্যবহারকারীদের ওয়েবকনফাইগ ট্রিগারকারী পরিবর্তন সম্পর্কে সাধারণ বিবৃতিগুলির ক্ষেত্রে, আমি পর্দার আড়ালের পরিস্থিতি পর্যবেক্ষণ করতে নিম্নলিখিত অ্যাপপুল সেটিংস সম্পাদনা করেছি;
appPool-->Advanced Settings-->Recycling-->Disable Recycling for Configuration Changes = False
appPool-->Advanced Settings-->Recycling-->Generate Recycle Event Log Entry-->[For Each Setting] = True
সেটিংসের সংমিশ্রণের সাথে, যদি এই প্রক্রিয়াটি কোনও অ্যাপপুলের পুনর্ব্যবহারের কারণ হয়ে থাকে তবে ইভেন্ট লগ এন্ট্রিটি রেকর্ড করা উচিত ছিল যা এটি ছিল না।
এটি আমাকে এই সিদ্ধান্তে নিয়ে যায় যে এটি একটি কেন্দ্রীভূত স্টোরেজ মাধ্যম থেকে অ্যাপ্লিকেশন সেটিংস লোড করা সম্ভব এবং সত্যই নিরাপদ।
আমার উল্লেখ করা উচিত যে আমি উইন্ডোজ on এ আইআইএস .5.৫ ব্যবহার করছি। কোডটি আইআইএস ৮-এ উইন ২০১২-তে স্থাপন করা হবে। এই উত্তরটির সাথে সম্পর্কিত যে কোনও পরিবর্তন হওয়া উচিত, আমি সেই উত্তরটি সেই অনুযায়ী আপডেট করব।