2009-07-28 13 views
13

जोड़ने मैं अपने WCF ग्राहक अंतिम बिंदुओं को एक कस्टम व्यवहार एक्सटेंशन जोड़ने के लिए की जरूरत है। मैं विन्यास के माध्यम से ऐसा करने की कोशिश की है, लेकिन अक्सर उल्लिखित बग जहां WFC विन्यास सही ढंग से प्रकार का नाम पार्स नहीं कर सकता ने काट लिया गया है। तो क्या मैं इसके बजाय प्रोग्रामिक रूप से कर सकता हूं?प्रोग्राम और विश्व स्तर पर एक कस्टम WCF ग्राहक endpoint व्यवहार विस्तार

मैं क्योंकि वे केवल-पढ़ने के क्रम में विन्यास वर्गों संशोधित नहीं कर सकते। मैं अगर मैं एक ग्राहक प्रॉक्सी (अर्थात clientbase) का एक उदाहरण के ahold पाने, मैं अपने Endpoint.Behaviors करने के लिए अपने कस्टम व्यवहार का एक उदाहरण जोड़ सकते हैं। हालांकि, मुझे प्रत्येक उदाहरण के लिए ऐसा करना होगा।

मैं विश्व स्तर पर अंतिम बिंदुओं को प्राप्त कर सकते हैं और उन्हें (Global.asax में उदा) पूर्व जोड़ सकते हैं या इन अंतिमबिंदुओं instantiated और क्षणिक छोड़ दिए जाते हैं?

+0

क्या आप इस प्रकार के लिंक को सही तरीके से पार्सिंग के बारे में नहीं बता सकते हैं? –

उत्तर

14

आप इस तरह कोड कुछ में ग्राहक के लिए व्यवहार को जोड़ने के लिए सक्षम होना चाहिए: यदि उस व्यवहार को पहले से ही यह दो बार आवेदन करने से बचने के लिए लागू किया गया है

IMyEndpointBehavior behavior = client.Endpoint.Behaviors.Find<IMyEndpointBehavior>(); 

if(behavior == null) 
{ 
    client.Endpoint.Behaviors.Add(new MyEndpointBehaviorImplementation()); 
} 

पहली पंक्ति की जाँच करेगा। यह पहले से ही (.Find() कॉल रिटर्न नल) लागू नहीं किया है, तो आप प्रोग्राम है कि व्यवहार अपने ग्राहक वर्ग के लिए जोड़ सकते हैं।

स्पष्ट रूप से सेवा के लिए पहली कॉल जारी करने से पहले आपको यह सब करने की आवश्यकता है। एक बार ऐसा करने के बाद, आप अब ग्राहक को नहीं बदल सकते हैं।

मार्क

+1

यह उन समाधानों में से एक है जिन्हें हम वर्तमान में नियोजित कर रहे हैं। परेशानी का हिस्सा यह है कि हम आलसी शुरुआत कर रहे हैं। मैं ग्लोबल.एक्सएक्स में शायद अधिक समर्थक दृष्टिकोण पसंद करूंगा। ऐसा लगता है कि मैं इसे या तो एप्लिकेशन कॉन्फ़िगरेशन (मूल रूप से वैश्विक) में डाल सकता हूं, या मैं इसे पहले उपयोग पर प्रोग्रामेटिक रूप से कॉन्फ़िगर कर सकता हूं, लेकिन मैं प्रोग्रामिक रूप से * वैश्विक रूप से * इसे कॉन्फ़िगर नहीं कर सकता। – Trinition

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