कोड में बाइंडिंग और Endpoint विन्यास की स्थापना एक ही रास्ता है, लेकिन एक और तरीका उपभोक्ता DLL का उपयोग करें और मौजूदा App.config फ़ाइल में विन्यास रहने देना है।
कारण अवैधऑपरेशन अपवाद ऐसा इसलिए होता है क्योंकि DLL में कॉन्फ़िगरेशन सेटिंग्स नहीं होती है। यह हमेशा ऐप.कॉन्फिग पर भरोसा करने के लिए भरोसा करता है लेकिन चूंकि आप किसी अन्य कंसोल एप्लिकेशन में डीएलएल का उपयोग कर रहे हैं, इसलिए इसे कॉन्फ़िगरेशन सेटिंग्स नहीं मिलती हैं।
जब हम ग्राहक घटक करने के लिए वेब सेवा को जोड़ने और वेब सेवा का उदाहरण बनाने के लिए "सेवा संदर्भ जोड़ें" संवाद का उपयोग करें, हम दृश्य स्टूडियो संचार चैनल के निर्माण को संभालने और विन्यास setting.So लोड, अगर जाने हम इस तरह के चैनल को स्पष्ट रूप से अपने स्वयं के बनाने में सक्षम हैं तो हम कॉन्फ़िगरेशन सेटिंग्स का प्रबंधन कर सकते हैं।
माइक्रोसॉफ्ट इस उद्देश्य के लिए कक्षाएं प्रदान करता है, ConfigurationChannelFactory<TChannel>
कक्षा एक है। एमएसडीएन कहता है:
विशिष्ट प्रकार के लिए चैनल कॉन्फ़िगरेशन तत्व बनाने के लिए सामान्य कार्यक्षमता प्रदान करता है।
ConfigurationChannelFactory WCF क्लाइंट कॉन्फ़िगरेशन के केंद्रीय प्रबंधन की अनुमति देता है।
उपयोग "सेवा संदर्भ जोड़ें" संवाद ग्राहक घटक करने के लिए वेब सेवा जोड़ने के लिए के रूप में हम सेवा चैनल इंटरफ़ेस उदाहरण की जरूरत है।
प्रथम नाम बदलने उत्पन्न App.config फ़ाइल App.dll.config करने और उसके फ़ाइल गुण आउटपुट निर्देशिका के लिए कॉपी बदलनेकॉपी करने के लिए संपत्ति हमेशा
बनाएं में एक वर्ग जिसमें एक विधि है जो वेब ऑब्जेक्ट को वेब सेवा तक पहुंचने के लिए चैनल ऑब्जेक्ट देता है:
public class ManageService
{
public static T CreateServiceClient<T>(string configName)
{
string _assemblyLocation = Assembly.GetExecutingAssembly().Location;
var PluginConfig = ConfigurationManager.OpenExeConfiguration(_assemblyLocation);
ConfigurationChannelFactory<T> channelFactory = new ConfigurationChannelFactory<T>(configName, PluginConfig, null);
var client = channelFactory.CreateChannel();
return client;
}
}
चूंकि हमने संपत्ति सेट की है, हमेशा वीएस परियोजना प्रोजेक्ट डीएलएल के साथ-साथ App.dll.config को बिन फ़ोल्डर में कॉपी करता है। Assembly.GetExecutingAssembly().Location
विधानसभा स्थान लौटने और ConfigurationManager.OpenExeConfiguration
एक विन्यास वस्तु के रूप में निर्दिष्ट ग्राहक विन्यास फाइल को खोलता है।
PluginConfig
app.config विन्यास फाइल वस्तु रखती है और ConfigurationChannelFactory<T>
इसे इस्तेमाल करता है सेवा के साथ संवाद करने।
इस विधि इस तरह से अपनी सेवा चैनल इंटरफ़ेस ऑब्जेक्ट पारित करके कहा जा सकता है:
Client = ManageService.CreateServiceClient<SampleService.IKeyServiceChannel>("MetadataExchangeTcpBinding_IKeyService");
SampleService
अपने वेब सेवा के नाम स्थान है। Client
वेब सेवा का उदाहरण रखता है।
यदि आपको डुप्लेक्स संचार और कॉलबैक को संभालने की आवश्यकता है, तो आप ConfigurationDuplexChannelFactory<TChannel>
कक्षा देख सकते हैं।
डब्ल्यूसीएफ वेब सेवा उदाहरण बनाते समय [अवैध ऑपरेशन अपवाद] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/24993/invalidoperationexception-after-creating-wcf-web-service-instance) –
संक्षेप में: उन कॉन्फ़िगरेशन सेटिंग्स घटक से ConsoleApplication1.exe पर कॉपी करने की आवश्यकता है।कॉन्फ़िगर –
@ जोश जो मेरे मामले में काम नहीं करेगा। मैंने अपने प्रश्न में इसका जिक्र नहीं किया, लेकिन यह .NET DLL को वीबी 6 कॉम एप्लिकेशन से बुलाया जा रहा है, इसलिए जो .NET घटक मैं लिख रहा हूं उसे किसी भी चीज़ पर भरोसा किए बिना वेब सेवा को सफलतापूर्वक कॉल करने में सक्षम होना चाहिए उपभोग करने वाले आवेदन से। –