ইসমাইলের উত্তরটি সাধারণত কাজ করে, তবে আমি একটি সমস্যা পেয়েছি, যা হ'ল মেশিন.কনফিগ OpenMappedMachineConfiguration
থেকে আপনার উত্তরাধিকার সূত্রে বিভাগগুলি হারাতে পারে বলে মনে হচ্ছে। এর অর্থ হল আপনি নিজের কাস্টম বিভাগগুলি অ্যাক্সেস করতে পারবেন (যা সমস্ত ওপি চেয়েছিল), তবে সাধারণ সিস্টেম বিভাগগুলিতে নয়। উদাহরণস্বরূপ, এই কোডটি কাজ করবে না:
ConfigurationFileMap fileMap = new ConfigurationFileMap(strConfigPath);
Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
MailSettingsSectionGroup thisMail = configuration.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; // returns null
মূলত, আপনি যদি একটি ঘড়ি রাখেন configuration.SectionGroups
, আপনি দেখতে পাবেন যে system.net সেকশনগ্রুপ হিসাবে নিবন্ধভুক্ত নয়, তাই এটি সাধারণ চ্যানেলগুলির মাধ্যমে বেশ কিছুটা অ্যাক্সেসযোগ্য।
এটিকে ঘিরে কাজ করার দুটি উপায় রয়েছে। প্রথমটি, যা আমি পছন্দ করি না তা হ'ল মেশিন.কনফিগ থেকে আপনার নিজের ওয়েবকনফাইগে অনুলিপি করে সিস্টেম বিভাগের গ্রুপগুলি পুনরায় প্রয়োগ করা eg
<sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<sectionGroup name="mailSettings" type="System.Net.Configuration.MailSettingsSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="smtp" type="System.Net.Configuration.SmtpSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
</sectionGroup>
আমি নিশ্চিত নই যে এর পরে ওয়েব অ্যাপ্লিকেশন নিজেই সঠিকভাবে চলবে তবে আপনি বিভাগটি সঠিকভাবে অ্যাক্সেস করতে পারবেন।
এটির পরিবর্তে দ্বিতীয় সমাধানটি আপনার ওয়েবকনফিগকে একটি এক্সইএইফাই কনফিগারেশন হিসাবে খোলার, যা সম্ভবত এটির উদ্দেশ্যযুক্ত ফাংশনের কাছাকাছি রয়েছে:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = strConfigPath };
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
MailSettingsSectionGroup thisMail = configuration.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; // returns valid object!
আমি এখানে জবাব দেওয়ার সাহস করি না, আমার বা ইসমাইলের কেউই এই নেট ফাংশনটি ব্যবহার করছে না। নেট ডিজাইনাররা কীভাবে উদ্দেশ্য করেছিলেন। তবে, এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে।