मैं सिर्फ डब्ल्यूसीएफ सीख रहा हूं और एक बहुत ही बुनियादी बात समझ नहीं पा रहा हूं।डब्ल्यूसीएफ एंडपॉइंट सापेक्ष पता
मैं एक डब्ल्यूसीएफ सेवा बना रहा हूं जिसे मैं आईआईएस में होस्ट करना चाहता हूं जैसे कि वेब एप्लिकेशन जैसे http://myhost/myapp/
और सब कुछ।
मैं वी.एस. में WCF सेवा परियोजना बना रहा हूं, मैं यह वर्णन एक *.svc
फ़ाइल मिल गया है, तो मैं एक साधारण endpoint यह करने के लिए इस तरह परिभाषित करते हैं:
<endpoint address=""
binding="basicHttpBinding"
contract="wcf_service_auth.IPshService" />
तो मैं एक तरह से इस सेवा को प्रकाशित आईआईएस वेब एप्लिकेशन वर्चुअल निर्देशिका में, मान लें कि इसका नाम psh_pub
है, इसलिए मैं url http://localhost/psh_pub/pshservice.svc/
के माध्यम से सेवा तक पहुंच सकता हूं। यह मुझे डब्ल्यूसीएफ बधाई पृष्ठ दिखाता है और मुझे डब्लूएसडीएल का एक लिंक देता है, जो मुझे सही wsdl विवरण देता है।
यह ठीक है।
अगला चरण - मैं एक एमएक्स एंडपॉइंट जोड़ना चाहता हूं। मैं config में जोड़ें:
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
वह बहुत ठीक है, अंत बिंदु का पता http://localhost/psh_pub/pshservice.svc/mex
पर पहुँचा जा सकता है और WcfTestClient.exe
मुझे उस यूआरएल से सही config देता है।
यहां समस्या आती है।
मेरे पास आईआईएस के तहत काम कर रहे डब्ल्यूसीएफ सेवा है और मैं इसे एक और एंडपॉइंट जोड़ना चाहता हूं। उदाहरण के लिए इसे net.tcp
एंडपॉइंट दें। आईआईएस डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है बंदरगाह 808 पर net.tcp
कनेक्शन स्वीकार करने और मैं अपने वेब अनुप्रयोग के गुणों के net.tcp
प्रोटोकॉल जोड़ रहा है, और मैं उस तरह मेरी सेवा के लिए एक अंत बिंदु जोड़ना चाहते हैं:
<endpoint address=""
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
और अब मैं मान लें कि मेरी सेवा यूआरएल net.tcp://localhost:808/psh_pub/pshservice.svc
के माध्यम से सुलभ होनी चाहिए। लेकिन ऐसा नहीं है। और हर "कैसे-करें" और वेब पर मैनुअल बताता है कि मैं उस तरह कॉन्फ़िग फ़ाइल में पूरा पता होना चाहिए:
<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc"
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
और अगर मैं ऐसा करते हैं, यह काम करता है। लेकिन अगर किसी अन्य आभासी निर्देशिका में सेवा होस्ट करें, तो मुझे कॉन्फ़िगरेशन को बदलने की आवश्यकता होगी। अगर मैं इसे अन्य सर्वर पर होस्ट करता हूं, तो मुझे कॉन्फ़िगरेशन बदलने की आवश्यकता होगी। यदि मैं इसे एकाधिक सर्वरों पर होस्ट करता हूं, तो मुझे अपने सर्वर के रूप में कई कॉन्फ़िगरेशन बनाए रखना होगा।
तो मुख्य सवाल है:
वहाँ WCF में किसी भी तरह से इसके लिए संपूर्ण url निर्दिष्ट किए बिना एक आईआईएस की मेजबानी की WCF सेवा के एक net.tcp
(या https) endpoint निर्दिष्ट करने के लिए है?
मुझे नहीं पता कि मैंने अभी क्या किया है, लेकिन मुझे खाली "पता" पैरामीटर के साथ एक काम कर रहा net.tcp endpoint मिला है। वैसे भी मदद के लिए धन्यवाद। – pushist1y