2010-01-07 12 views
8

मुझे एक समस्या का सामना करना पड़ रहा है।सी #: एकाधिक App.config फ़ाइलों को प्रबंधित करें

मेरे पास एक डीएलएल है जो एक webservice के साथ बातचीत कर रहा है और यह अपनी app.config फ़ाइल में इसकी एंडपॉइंट कॉन्फ़िगरेशन बचाता है।

मैं अपने होस्ट एप्लिकेशन से इस डीएलएल का उपयोग करना चाहता हूं। होस्ट एप्लिकेशन की अपनी कॉन्फ़िगरेशन फ़ाइल होती है। जब मैं सेवा एंडपॉइंट बदलता हूं तो मुझे हर बार होस्ट की कॉन्फ़िगरेशन में डीएलएल कॉन्फ़िगरेशन की सामग्री को मर्ज करना होगा।

क्या कोई तरीका है कि मैं दोनों कॉन्फ़िगरेशन फ़ाइलों का उपयोग कर सकता हूं। तो डीएलएल अपनी कॉन्फ़िगरेशन का उपयोग करता है जबकि होस्ट एप्लिकेशन अपनी कॉन्फ़िगरेशन का उपयोग करता है।

उत्तर

2

डीएलएल की कॉन्फ़िगरेशन फ़ाइल को EXE में मर्ज करने का सही तरीका है; वह बॉक्स से बाहर काम करेगा। लेकिन कॉन्फ़िगरेशन फ़ाइल को स्पष्ट रूप से खोलने और इसे पढ़ने के तरीके के लिए .NET DLL Settings and Config when there's a Web Reference - whats going on? देखें। समस्या यह है कि आपको पहले कॉन्फ़िगरेशन फ़ाइल को ढूंढना होगा, और यह आवश्यक नहीं है। यदि डीएलएल बस बैठे हैं, तो आप एक ही निर्देशिका देख सकते हैं। लेकिन अगर यह जीएसी में है, तो आप कहां देखते हैं? मैं सही तरीके से चिपके रहने का सुझाव देता हूं।

9

कॉन्फ़िगरेशन फ़ाइलों में बाहरी फ़ाइलें शामिल हो सकती हैं।

आप एक बाहरी फ़ाइल पर endpoint के config डाल चाहते हैं, और उसके बाद तो yout मेजबान में शामिल है, तो आप मेजबान के config हर बार बदलने की जरूरत नहीं होगी

उदाहरण के लिए: अपने app.config फ़ाइल में :

... 
<configSections> 
    ... 
    <section name="myEndpoint" type="System.Configuration.DictionarySectionHandler" /> 
    ... 
</configSections> 
... 
<myEndpoint configSource="myEndpoint.config" /> 

तो myEndpoint.config कि दिखाई देगा:

<?xml version="1.0" encoding="utf-8"?> 
<myEndpoint> 
    <add key="myKey" value="myValue" /> 
</myEndpoint> 

और आप इसी तरह से सामान्य पढ़ने के लिए, अपने कोड से मूल्यों को एक्सेस कर सकते हैं ऐप्स सेटिंग, उस तरह:

var myEndpointConfig = (Hashtable)ConfigurationManager.GetSection("myEndpoint"); 
Console.WriteLine(myEndpointConfig["myKey"]); 
+0

धन्यवाद यह इंगित करने के लिए newfurniturey! –

0

यह मदद से आप svcutil उपयोग कर रहे हैं आपके प्रॉक्सी उत्पन्न करने के लिए हो सकता है: जाँच /config: और /mergeConfig स्विच, उन के साथ आप जो कॉन्फ़िग फ़ाइल उत्पन्न की जानकारी प्राप्त करता है निर्दिष्ट कर सकते हैं और आप इसे विलय कर सकते हैं जो कुछ भी पहले से ही है उसे ओवरराइट करने के बजाय।

संबंधित मुद्दे