2013-01-16 17 views
6

मैंने डब्ल्यूसीएफ सेवा के संदर्भ में दो अंत बिंदुओं का संदर्भ जोड़ा है।नाम और अनुबंध के साथ एंडपॉइंट तत्व नहीं मिला

<client> 
    <endpoint name="ABCServiceV1" address="http://staging.ABCwebservices.com/ABC/Service.svc" 
    binding="basicHttpBinding" bindingConfiguration="ABCServiceV1" 
    contract="ABCService.IService" /> 
    <endpoint name="ABCServiceV2" address="http://staging.ABCwebservices.com/ABC/Service.svc/20" 
    binding="basicHttpBinding" bindingConfiguration="ABCServiceV2" 
    contract="ABCService.IService1" /> 
</client> 

ग्राहक बनाने के लिए कोड के रूप में रूप में नीचे है: सेवा निम्न कॉन्फ़िग फ़ाइल में जुड़ती जोड़ने पर - सका "नहीं

ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV2"); 

हालांकि, मैं एक रनटाइम त्रुटि हो रही है ServiceModel क्लाइंट कॉन्फ़िगरेशन सेक्शन में 'ABCServiceV2' और अनुबंध 'ABCService.IService' के साथ एंडपॉइंट तत्व ढूंढें। ऐसा इसलिए हो सकता है क्योंकि आपके एप्लिकेशन के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं मिली है, या क्योंकि इस नाम से मेल खाने वाला कोई एंडपॉइंट तत्व क्लाइंट तत्व में नहीं पाया जा सकता है । "

अगर मैंने ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV1"); का उपयोग किया तो सब कुछ ठीक काम करता है। लेकिन जब ABCServiceV2 का उपयोग करते हैं तो यह अनुबंध - ABCService.IService की तलाश करने का प्रयास कर रहा है - जब इसे खोजना चाहिए - ABCService.IService1।

मैं इसे सही अनुबंध की तलाश कैसे करूं?

+0

ABCServiceV2 के लिए पता मुझे यकीन है कि अगर यह साथ है या नहीं करने के लिए कुछ भी नहीं है नहीं कर रहा हूँ एक '20' अंत में जोड़ा है ...। बस एक अवलोकन। – user959729

+0

मुझे लगता है कि यह ठीक होना चाहिए क्योंकि एंडपॉइंट को अलग करने के लिए '20' की आवश्यकता है। सेवा के दोनों एंडपॉइंट्स सोपूआई जैसे टूल पर ठीक काम करते हैं। तो मुद्दा क्लाइंट कोड में कहीं है। – ipoh

उत्तर

3

यदि आपने किसी भिन्न सेवा (एबीसीएस सर्विसवी 2) का दूसरा संदर्भ जोड़ा है तो मेरा मानना ​​है कि इससे एबीसीएस सर्विसवी 2 के लिए दूसरी सेवा कक्षा उत्पन्न होगी। दोनों कक्षाएं अलग-अलग अनुबंध (एबीसी सेवा। सेवा और एबीसी सेवा.आईएसईआर 1) लागू करेंगी ताकि आप एंडपॉइंट्स का आदान-प्रदान करने में सक्षम न हों।

मेरा मानना ​​है कि यदि आप ऐसा तरह अपने दो सेवा अंतिमबिंदुओं आरंभ करने के लिए सक्षम होना चाहिए:

ABCService.ServiceClient ABCClient = new ServiceClient("ABCServiceV1"); 
ABCService.Service1Client ABCClient1 = new Service1Client("ABCServiceV2"); 
+1

धन्यवाद .. मुद्दा यह था कि मैं Service1Client के बजाय ServiceClient का उपयोग कर रहा था। निम्न कोड बिना किसी समस्या के काम करता है: ABCService.Service1Client ABCClient1 = नई सेवा 1 क्लाइंट ("ABCServiceV2"); – ipoh

1

हालांकि इस पोस्ट पुरानी है और उत्तर दिया, इस सवाल का जवाब मेरे मामले में मदद नहीं की। मेरी समस्या यह थी कि मैंने सेवा क्लाइंट को svcutil.exe टूल के साथ जेनरेट किया, लेकिन किसी भी नेमस्पेस को बिल्कुल निर्दिष्ट नहीं किया; और इसलिए अनुबंध नामस्थान नाम डिफ़ॉल्ट रूप से स्कीमा दस्तावेज़ के लक्ष्य नेमस्पेस के रूप में जेनरेट किया गया था, हां कुल गड़बड़।

दूसरी ओर मैं प्रोजेक्ट में सेवा संदर्भ जोड़े जाने पर उत्पन्न कॉन्फ़िगरेशन फ़ाइल का उपयोग करने का प्रयास कर रहा था। इस फ़ाइल में अनुबंध नेमस्पेस ServiceReference1 (डिफ़ॉल्ट रूप से) या कोई अन्य नाम जो आप चाहते हैं, सही तूफान है! लेकिन मुझे बस इतना करना था कि <endpoint> की अनुबंध विशेषता से एफक्यूएन से नामस्थान भाग को हटाना था, और अनुबंध सीएलआर के लिए दृश्यमान हो गया।

आशा इस मदद दूसरों

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