में डब्ल्यूसीएफ net.pipe बाध्यकारी होस्ट करते समय नामित पाइप के नाम को नियंत्रित करते हुए मेरे पास http और net.pipe के माध्यम से एक सेवा सुलभ है। यह आईआईएस 7 (सर्वर 2008) में होस्ट किया जा रहा है। मैं एक ही मशीन पर कई ग्राहकों के लिए इस सेवा के विभिन्न उदाहरणों की मेजबानी कर सकता हूं और इसलिए HTTP वर्चुअल होस्टनाम आदि के साथ सेटअप है। यह सब ठीक काम कर रहा है।आईआईएस
मैंने सोचा कि मैं शुद्ध नामित पाइप बाध्यकारी के लिए इसी तरह करना होगा - नामित पाइप आधार पते में ग्राहकों की virtualhostname 'के कुछ फार्म का उपयोग करते हुए, इसलिए मुझे अलग net.pipe कलश के साथ विभिन्न ग्राहक उदाहरणों का उपयोग करने की अनुमति देता है (मुझे लगता है कि net.pipe नाम यूआरएन यूआरएल नहीं हैं इसलिए वे अनिवार्य रूप से मनमानी हो सकते हैं लेकिन मैंने सोचा कि मैं HTTP पते के समान पैटर्न का पालन करूंगा)। net.pipe के लिए आधार का पता लगता है आईआईएस द्वारा ध्यान नहीं दिया जा करने के लिए -
यहाँ मेरी web.config
<service name="Administration" behaviorConfiguration="AdministrationBehavior">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="normalWsBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="normalNetNamedPipeBinding" contract="IAdministration" />
<endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://virtualhostname.com/service" />
<add baseAddress="net.pipe://virtualhostname.com/administration/service" />
</baseAddresses>
</host>
</service>
हालांकि, जब सेवा के लिए डबल्यूएसडीएल तक पहुँचने है। इसके बजाय मुझे मशीन का असली होस्टनाम मिलता है, और net.pipe पता यूआरएन जो पूरी तरह से आईआईएस द्वारा स्वरूपित किया गया प्रतीत होता है।
<wsdl:port name="NetNamedPipeBinding_IAdministration" binding="tns:NetNamedPipeBinding_IAdministration">
<soap12:address location="net.pipe://realhostname/service/Administration.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>net.pipe://realhostname.com/service/Administration.svc</wsa10:Address>
<Identity>
<Spn>host/realhostname.com</Spn>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
रास्ता net.pipe नाम बनते हैं पर कोई नियंत्रण नहीं के साथ
, मैं मशीन पर एकाधिक ग्राहक सेवा उदाहरणों के बीच भेदभाव करने में सक्षम नहीं होगा। क्या किसी के पास कोई संकेत है कि कैसे नेट नामित पाइप बाध्यकारी यूआरएन आईआईएस पर्यावरण के भीतर नियंत्रित किया जा सकता है?
(मैं परीक्षण के दौरान स्टैंडअलोन net.pipe की मेजबानी की एक बहुत कुछ कर (यानी नई ServiceHost()) तो मैं जानता हूँ कि मेरे net.pipe बाइंडिंग आईआईएस के बाहर काम करते हैं, और सही नामित पाइप पर नियंत्रण अनुमति नहीं URN प्रयुक्त)
नाम आईआईएस के भीतर नियंत्रित नहीं किया जा सकता है - किसी को भी करता है होस्टिंग और एक ही मशीन पर एकाधिक अलग net.pipe सेवा उदाहरणों तक पहुँचने के साथ किसी भी अनुभव है?
आप जानते हैं कि net.pipe बाइंडिंग केवल "मशीन पर" काम कर रहे हैं, जैसे कि आप भले ही वे जब IIS में होस्टिंग, तुम सच में आपकी सेवा पते का चयन करने के नहीं मिलता है आईआईएस .... –
में होस्ट कर रहे हैं कुछ अन्य मशीन से उन तक पहुँच सकते हैं नहीं, - यह हमेशा 'http है: // machinename [: बंदरगाह ]/virtualdir/yourservice.svc' - मुझे लगता है एक ही पतों net.pipe पर लागू होता है - आप अगर आईआईएस में होस्ट उनके नामकरण नियंत्रित करने के लिए नहीं मिलता है .... –
हाँ, HTTP अंतिमबिंदुओं ऑफ मशीन के उपयोग के लिए कर रहे हैं, और मैं कुछ सीमित (लेकिन उम्मीद है कि तेजी से) मशीन एक्सेस पर net.pipe एंडपॉइंट्स का उपयोग करने की उम्मीद कर रहा था। जब मैं आईआईएस में मेरी HTTP अंतिम बिंदुओं की मेजबानी, मैं तथापि, क्योंकि मैं डोमेन मैं उपयोग करना चाहते हैं निर्दिष्ट (कुछ स्तर पर) सेवा का पता करने के लिए चुना है मिलता है। यह मैं कई आईआईएस साइटों अलग यूआरएल यानी http://customer1.com/admin/Admin.svc और http://customer2.com/admin/Admin.svc अगर मैं कर सकते हैं 'के माध्यम से एक सुलभ है की सुविधा देता है net.pipe के लिए मेरे मूल पते का चयन नहीं करते हैं, आईआईएस में विभिन्न ग्राहकों के लिए होस्ट किए गए एकाधिक नेटपाइप बाइंडिंग कैसे हो सकते हैं? –