2011-02-18 18 views
43

के माध्यम से गतिशील रूप से WCF वेब सेवा संदर्भ URL पथ स्विच करें कॉन्फ़िगरेशन फ़ाइल के माध्यम से आप गतिशील रूप से WCF वेब सेवा संदर्भ URL पथ को कैसे स्विच करते हैं?कॉन्फ़िगरेशन फ़ाइल

उत्तर

75

हैं में उत्पादन में पता (URL) को बदलने के लिए बात करने के लिए पूरी तरह से सामान्य है आप सिर्फ उस यूआरएल को ओवरराइड करना चाहते हैं जो एक अलग यूआरएल में कॉन्फ़िगर में है। मान लें कि आपके पास एक टेस्ट सेवा और लाइव सेवा है। आप बस यह कर सकते हैं।

client.Endpoint.Address = new EndpointAddress(Server.IsLiveServer() ? 
    @"LiveUrl" : @"TestURl"); 

कहाँ उन यूआरएल जहां भी आप चाहते

+2

सर्वर क्या है ILLiveServer() :)? – Mani

+0

सर्वर .IsLiveServer() केवल एक कस्टम विधि है (इसे जो कुछ भी आप चाहते हैं उसे कॉल करें) जो यह निर्धारित करने के लिए एक जांच करता है कि कौन सा यूआरएल उपयोग करना है। – David

+0

सर्वर .IsLiveServer() यूआरएल को उपभोग करने वाले पर्यावरण के अनुसार यूआरएल स्विच करने के लिए है – Anand

0

आप ऐसा कर सकते हैं यकीन है कि, यहाँ एक नजर है: How to config clients for a wcf service?

यह विकास में स्थानीय होस्ट करने के लिए और web.config

+1

मैंने 7 फाइलों में विकास यूआरएल के संदर्भ देखा: context.svcmap, .xsd, .wsdl, .disco, .svcinfo और web.config। क्या यह कॉन्फ़िगर करने वाला वेब.कॉन्फिग मुझे चाहिए? –

+0

आह क्या आपका मतलब है कि आप उन सभी को बदलना चाहते हैं, जो web.config को छूने वाले हार्ड कोड किए गए मानों को ओवरराइड करते हैं? –

+0

@ मार्टिन: मुझे यकीन है कि यह नामस्थान है, न कि आपका विकास यूआरएल। –

4

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

22

बस आयलैंड से जवाब पर विस्तार करने के लिए: -

MyClient client = new MyService.MyClient(); 
client.Endpoint.Address = new EndpointAddress(new Uri("insert new url here"), 
    client.Endpoint.Address.Identity, client.Endpoint.Address.Headers); 
client.Open(); 

HTH!

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