2013-03-15 8 views
6

मैं उलझन में हूं कि कुछ क्यों काम करता है। मैं इस तरह एक WCF सेवा को विन्यस्त कर रहा हूँ:डब्ल्यूसीएफ सेवा एंडपॉइंट लोकलहोस्ट भ्रम

<services> 
    <service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior"> 
    <endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" /> 
    </service> 
</services> 
BindingConfiguration और behaviorConfiguration

बहुत सरल कर रहे हैं, बस कुछ समय समाप्ति को विन्यस्त।

मेरे exe में, मैं इस तरह मेजबान शुरू करता हूं।

_serverHost = new ServiceHost(type); // implementing IClientCommand 
_serverHost.Open(); 

यह सब बहुत आसान है और यह काम करता है, मैं इस सेवा को एक अलग पीसी से कॉल कर सकता हूं। हालांकि, एक अलग मुद्दे पर पढ़ने के बाद (टीसीपी सॉकेट पर सुनना), मुझे लगता है कि यह काम नहीं करना चाहिए। जैसा कि मैं स्थानीयहोस्ट पर बाध्यकारी हूं, यह सेवा उस पीसी के बाहर से पहुंच योग्य नहीं होनी चाहिए जिस पर यह चल रहा है?
मैंने पीसी पर नेटस्टैट की जांच की और यह "127.0.0.1" के बजाय आईपी एड्रेस "0.0.0.0" से जुड़ा हुआ है, यह बताते हुए कि यह किसी अन्य पीसी से क्यों काम करता है।

लेकिन मुझे नहीं लगता कि यह स्थानीयहोस्ट से "0.0.0.0" क्यों जाता है?

+0

मैंने थोड़ी गहरी खुदाई की, केवल अधिक भ्रमित होने के लिए। अगर मैं 'net.tcp: // 127.0.0.1/service' का उपयोग करता हूं, तो यह वास्तव में लूपबैक से जुड़ जाएगा और यह पीसी के बाहर से पहुंच योग्य नहीं होगा। हालांकि 'net.tcp: // localhost/service' 0.0.0.0 से बंधेगा और लूपबैक के बाहर से पहुंच योग्य होगा। क्यूं कर? – Greuntesop

उत्तर

0

नेट.tcp एक मशीन पर संचार तक ही सीमित नहीं है, शायद आप net.pipe पर सोच रहे हैं? 0.0.0.0 के बारे में: मेजबान फ़ाइल सेवा चलाने वाली मशीन पर कैसे परिभाषित की जाती है? Here सामान्य रूप से डब्ल्यूसीएफ पर एक अच्छा लेख है।

+0

हाय, मैं यह नहीं कह रहा हूं कि net.tcp एक मशीन पर संचार के लिए प्रतिबंधित है। मैं कह रहा हूं कि यदि आप net.tcp: // localhost का उपयोग करते हैं: ... इसे लूपबैक पते से बाध्य होना चाहिए और पीसी के बाहर से पहुंच योग्य नहीं होना चाहिए। लकिन यह है। – Greuntesop

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