2009-03-26 13 views
5

मैं अभी भी पूरी डब्ल्यूसीएफ चीज सीख रहा हूं, इसलिए कृपया यहां मेरे साथ भालू।एक ग्राहक से कई डब्ल्यूसीएफ सेवाओं का उपभोग कैसे करें

मेरे पास सी # और वीएस 2008 का उपयोग करके बनाई गई दो स्वयं होस्टेड सेवाएं हैं:
सेवा # 1 दो नंबर जोड़ता है और परिणाम देता है।
सेवा # 2 एक संख्या का वर्ग देता है।

मैं चाहता हूं कि ग्राहक सेवा 1 पर दो नंबरों में भेजने में सक्षम हो, योग प्राप्त करें और फिर राशि 2 में भेज दें और वर्ग प्राप्त करें।

मेरे पास दोनों सेवाओं के लिए दो उत्पन्न प्रॉक्सी हैं, और मैं उन पर इंटेलिजेंस का उपयोग करने में सक्षम हूं, इसलिए यह हिस्सा माना जाता है कि यह हिस्सा काम करता है।

अब मैं अपनी app.config फ़ाइल को कैसे कॉन्फ़िगर कर सकता हूं जैसे कि मैं दोनों सेवाओं के साथ संवाद कर सकता हूं? अभी, जब भी मैं ऐसा करने की कोशिश करता हूं, मुझे अपवाद मिलता है।

[ग्राहक ठीक काम करता है अगर मैं एक बार में केवल एप्लिकेशन फाइल में विन्यास में से एक है, और केवल उस सर्वर कॉल करने के लिए प्रयास करें।]

मुझे लगता है यह एक बहुत ही noobish सवाल है, और जवाब है शायद "कॉन्फ़िगरेशन फ़ाइल को _____ तरीके से ढांचा" है, लेकिन Google में बस एक उदाहरण/मार्गदर्शिका प्रतीत नहीं होती है।

कोई भी यह कैसे जानता है?

नोट: Consume multiple WCF services from one client क्लाइंट हालांकि डुप्लिकेट की तरह लगता है कि मैं क्या देख रहा हूं।

संपादित करें: marc_s के लिए धन्यवाद, मैं इसे

के साथ दोनों सेवाओं के विभिन्न एप्लिकेशन में चल रहा है, मैं सर्वर कॉन्फ़िग फ़ाइल को विभाजित करने की जरूरत नहीं थी

काम कर ली, लेकिन यहाँ क्या मैं ग्राहक config के साथ किया था है फ़ाइलें: सबसे पहले स्वत: जनरेट SvrUtil.exe का उपयोग कर config फ़ाइलों और फिर उन्हें इस तरह से विलय कर दिया:

<bindings> 
    <wsHttpBinding> 

    <binding> 
    ... 
    </binding> 

    <binding> 
    ... 
    </binding> 

    </wsHttpBinding> 
</bindings> 

... +०१२३५१६४१०

<endpoint> 

...

+0

+1 - 1,999 से 2K प्रतिनिधि से आप टक्कर ताकि आप अब अन्य लोगों के जवाब संपादित कर सकते हैं को वोट किया है! यहाँ प्रारंभ करें –

+0

@ जेरेमी: हाहा धन्यवाद! यह अविश्वसनीय है कि कितनी देर तक यह 1999 – Mostlyharmless

उत्तर

3

आप, अलग अंतिमबिंदुओं/बंदरगाहों पर दो सेवाओं को चलाना चाहता हूँ कुछ इस तरह करते हैं:

सर्वर साइड:

<service name="Service1"> 
    <endpoint address="http://localhost:8001/service1.asmx" 
      binding="basicHttpBinding" 
      contract="IService1" /> 
</service> 
<service name="Service2"> 
    <endpoint address="http://localhost:8002/service2.asmx" 
      binding="basicHttpBinding" 
      contract="IService2" /> 
</service> 

क्लाइंट-साइड:

<client> 
    <endpoint address="http://localhost:8001/service1.asmx" 
      binding="basicHttpBinding" 
      contract="IService1" 
      name="Service1" /> 
    <endpoint address="http://localhost:8002/service2.asmx" 
      binding="basicHttpBinding" 
      contract="IService2" 
      name="Service2" /> 
</client> 

कि आपको सर्वर पर दो अलग, व्यक्तिगत अंतराल देना चाहिए और एक ग्राहक जो दोनों से बात करेगा।

मार्क

+0

धन्यवाद, यह काम किया! कॉन्फ़िगरेशन फ़ाइलों को मर्ज करने के लिए इतने सारे क्रमपरिवर्तन थे, कि मैंने सभी क्रमिकताओं को कवर करने के बजाय, बस पूछने का निर्णय लिया: पी – Mostlyharmless

0

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

+0

पर फंस गया था मैं उन दोनों को एक ही बंदरगाह पर चल रहे हैं, लेकिन मैं सेवा बी से सेवा एक कॉल करने के लिए सक्षम हूँ, दोनों बंदरगाह 8000. मान लीजिए मैं उन्हें विभिन्न बंदरगाहों पर चला सकता हूँ को सुन, मैं app.config कैसे बना सकता हूं? – Mostlyharmless

+0

के तहत आप एक से अधिक तत्वों, और इतने पर होगा। आप केवल पूर्ण कॉन्फ़िगरेशन अनुभागों की प्रतिलिपि नहीं बना सकते हैं, आपको उन्हें मर्ज करना होगा। –

3

मुझे एहसास है कि आपने ऐप के लिए पूछा है। कॉनफिग उत्तर लेकिन यह समझने में मदद कर सकता है। मैं आमतौर पर क्लाइंट कनेक्शन को प्रोग्रामेटिक रूप से पहले कॉन्फ़िगर करके शुरू करता हूं, क्योंकि यह आसान है, और एक बार जब आप इसे काम कर लेते हैं तो आप इसे अपने ऐप पर ले जा सकते हैं। कॉनफिग।

यहां डब्ल्यूसीएफ क्लाइंट को कॉन्फ़िगर करने का एक उदाहरण है।

BasicHttpBinding binding = new BasicHttpBinding(); 
EndpointAddress address = new EndpointAddress(serverURL); 
MyServiceClient myServiceProxy = new MyServiceClient(binding, address); 

तब आपके पास अपने ऐप में नीचे कुछ जैसा हो सकता है। कॉनफिग।

<client> 
    <endpoint address="http://localhost/service1.asmx" 
      binding="basicHttpBinding" 
      bindingConfiguration="basicHttpBinding" 
      contract="IService1" 
      name="Service1" /> 
    <endpoint address="http://localhost/service2.asmx" 
      binding="basicHttpBinding" 
      bindingConfiguration="basicHttpBinding" 
      contract="IService2" 
      name="Service2" /> 
</client> 
संबंधित मुद्दे