2009-08-01 13 views
5

में इंटरसेप्ट संदेश क्या किसी को वेब सेवा एक्सटेंशन के साथ कोई अनुभव मिला है? मैंने एमएस उदाहरणों से वेब सेवा विस्तार करने का प्रयास करने में समय बिताया।डब्ल्यूसीएफ क्लाइंट

मेरे पास वीएस आईडीई "प्रोजेक्ट> सेवा संदर्भ जोड़ें" के माध्यम से डब्लूएसडीएल के संदर्भ को जोड़कर एक .NET 3.5 वेब सेवा क्लाइंट है। यह मेरा वेब सेवा क्लाइंट बनाया गया है, और सभी ठीक काम करता है।

मुझे अपने वेब सेवा क्लाइंट के लिए अनुरोध और प्रतिक्रिया निकाय को रोकने की आवश्यकता है। मुझे वेब सेवा एक्सटेंशन के बहुत सारे संदर्भ मिल गए हैं, लेकिन मुझे थके हुए हमले का सामना करना पड़ रहा है, और बस मेरे एक्सटेंशन को आग नहीं मिल सकती है।

मैंने यहां "एसओएपी एक्सटेंशन को कैसे कार्यान्वित करें" (http://msdn.microsoft.com/en-us/library/7w06t139.aspx) से एमएस उदाहरण का उपयोग किया है, जो अनुरोध/प्रतिक्रिया धाराओं के लिए लॉगर बनाता है।

संबंधित एमएस लेख "साबुन संदेश संशोधन" (http://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx) दिखाता है कि वेब ग्राहक के लिए सोप एक्सटेंशन को सक्षम करने: सोप एक्सटेंशन को लागू करने

वहाँ चलाने के लिए दो तरीके हैं

क्लाइंट या सर्वर एप्लिकेशन पर एक SOAP एक्सटेंशन। सबसे पहले, आप एक्सटेंशन को चलाने के लिए एप्लिकेशन को कॉन्फ़िगर कर सकते हैं। सभी वेब सेवाओं, विशेष रूप से एक vroot पर सभी वेब विधियों के लिए चलाने के लिए अपने एसओएपी एक्सटेंशन को कॉन्फ़िगर करने के लिए, Web.config फ़ाइल के भीतर <soapExtensionTypes> तत्व अनुभाग संपादित करें। निम्न कोड दिखाता है कि प्रकार विशेषता मान एक पंक्ति पर होना चाहिए और एक्सटेंशन के पूर्ण योग्य नाम, साथ ही संस्करण, संस्कृति, और हस्ताक्षरित असेंबली के सार्वजनिक कुंजी टोकन शामिल होना चाहिए।

< विन्यास >
<system.web>
<webservices>
<soapExtensionTypes>
< ऐड प्रकार = "Contoso.MySoapExtension, संस्करण = 2.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35" प्राथमिकता = "1" समूह = "0"/>
</साबुन एक्स्टेंशन टाइप >
</webservices >
</system.web>
</विन्यास >

मैं अपने ही वर्ग पुस्तकालय में traceextension संकलित किया है, और वेब सेवा के web.config में यह संदर्भित परियोजना इसलिए की तरह:

< ऐड प्रकार = "TraceExtension, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = ef8757fac167b8d8" प्राथमिकता = "1" समूह = "उच्च "/ >

कोई खुशी नहीं। कुछ भी लॉग नहीं है, कोई ब्रेकपॉइंट हिट नहीं होता है।

मैंने फिर संदर्भित वर्ग को हटा दिया, और स्रोत कोड को वेब सेवा प्रोजेक्ट में गिरा दिया।

मैं इतना है कि यह करने के लिए एक संदर्भ जोड़ने की कोशिश की (मेरे नाम स्थान ServcieTest001 है):

< ऐड प्रकार = "ServiceTest001.TraceExtension" समूह = "उच्च" प्राथमिकता = "1"/>

मैंने निम्नलिखित धागे को एक गाइड के रूप में उपयोग किया ताकि मुझे "हो-कच्चे-साबुन-डेटा-से-एक-वेब-संदर्भ-क्लाइंट-रनिंग-इन-एएसपी-नेट" (http://stackoverflow.com/questions/300674/getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net) एक्सटेंशन को सक्षम किया जा सके।

अभी भी कोई खुशी नहीं है। मैंने तब उपर्युक्त थ्रेड से कोड कॉपी किया, और जब भी मैं SOAP अनुरोध करता हूं तब भी एक्सटेंशन को आग नहीं मिल सकती है।

क्या कोई मुझे एक काम करने योग्य डाउनलोड करने योग्य वेब सेवा एक्सटेंशन डेमो प्रोजेक्ट पर इंगित कर सकता है, इसलिए मैं इसे अलग कर सकता हूं और जो कुछ भी याद कर रहा हूं उसे बाहर कर सकता हूं?

उत्तर

12

जॉन सही है, आप कस्टम क्लाइंट व्यवहार का उपयोग कर क्लाइंट पर संदेशों को रोक सकते हैं जो IClientMessageInspector लागू करता है। एमएसडीएन पर How To: Inspect or Modify Messages on the Client देखें।

इसके बारे में एकमात्र चीज 'मुश्किल' यह है कि यदि आप शरीर संदेश को संशोधित करने की योजना बनाते हैं तो आपको पहले मूल संदेश की एक प्रति बनाना होगा। Gooey विवरण के लिए Using the Message Class देखें।

0

संभावना है कि आप कुछ आराम करना चाहते हैं।

आप कभी भी डब्लूएसई का उपयोग नहीं करना चाहते हैं। डब्ल्यूएसई अप्रचलित है।

आप एएसएमएक्स वेब सेवाओं का उपयोग नहीं करना चाहते हैं - माइक्रोसॉफ्ट अब उन्हें "विरासत" तकनीक मानता है, और बग फिक्स नहीं करेगा। बीटीडब्ल्यू, डब्लूएसई एएसएमएक्स पर आधारित है, तो यह क्या है?


आप केवल विंडोज संचार फाउंडेशन के साथ काम करना चाहते हैं। एमएसडीएन पर डब्ल्यूसीएफ विकास केंद्र http://msdn.microsoft.com/wcf/ पर है।

मज़े करो, और गंदा, प्राचीन, अप्रचलित सामग्री से दूर रहें।

+2

मेरी इच्छा है कि मैं wcf का उपयोग कर सकूं ... यह एक विरासत (गैर .net) वेब सेवा है जिसे मैं कनेक्ट कर रहा हूं, जो एक कस्टम एन्क्रिप्शन योजना का उपयोग करता है। यही कारण है कि मैं वेब सेवा विस्तार बनाने की कोशिश कर रहा हूं। –

0

युप - मैं बहुत थक गया था।

I सोचें वेब सेवा एक्सटेंशन "वेब संदर्भ" (.net 2) के साथ काम करते हैं, न कि "सेवा संदर्भ" (.net 3)।

तो मुझे लगता है कि मेरा प्रश्न बदलने का अनुमान है - मैं एक विरासत वेब सेवा से जुड़े .net 3 "सेवा संदर्भ" के अनुरोध और प्रतिक्रिया को कैसे रोकूं?

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