इश्माईल का जवाब आम तौर पर काम करता है, हालांकि मुझे एक मुद्दा मिला, जो यह है कि 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 एक सेक्शनग्रुप के रूप में पंजीकृत नहीं है, इसलिए यह सामान्य चैनलों के माध्यम से बहुत अधिक दुर्गम है।
इसके आसपास काम करने के दो तरीके हैं। पहला, जो मुझे पसंद नहीं है, उन्हें सिस्टम अनुभाग समूहों को मशीन से कॉपी करके फिर से लागू करना है।
<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>
मुझे यकीन नहीं है कि वेब एप्लिकेशन खुद उसके बाद सही ढंग से चलेगा, लेकिन आप सेक्शनग्रुप को सही तरीके से एक्सेस कर सकते हैं।
इसके बजाय दूसरा समाधान यह है कि अपने web.config को एक EXE कॉन्फ़िगरेशन के रूप में खोलें, जो संभवतः वैसे भी अपने इच्छित फ़ंक्शन के करीब है:
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!
मैं यहां दिए गए उत्तरों में से किसी का भी साहस नहीं करता, न ही मेरा या ईशमाईल का, इन कार्यों का काफी उपयोग कर रहे हैं। लेकिन, यह मेरे लिए काम करने लगता है।