मेरे पास net.tcp WCF सेवा है, और मैं ओएस को पोर्ट को चुनना चाहता हूं जिसे इसे सुनना चाहिए। इसलिए मैंने पोर्ट को अपने यूआरआई में 0 पर सेट किया है, और netstat
पुष्टि करता है कि ओएस ने 5000 रेंज में एक पोर्ट चुना है।मैं उस बंदरगाह को कैसे प्राप्त कर सकता हूं जिस पर डब्ल्यूसीएफ सेवा सुन रही है?
सेवा प्रक्रिया के अंदर कोड में उठाए गए वास्तविक पोर्ट को मैं कैसे पा सकता हूं?
कुछ कोड को दिखाने के लिए मैं क्या कोशिश की है:
Type serviceType = ...;
Uri address = new Uri("net.tcp://0.0.0.0:0/Service/");
ServiceHost serviceHost = new ServiceHost(serviceType, address);
ServiceEndpoint endPoint = serviceHost.AddServiceEndpoint(type, binding, "");
int port1 = endPoint.ListenUri.Port; // returns 0
int port2 = serviceHost.BaseAddresses.First().Port; // also returns 0
यादृच्छिक बंदरगाह पर सुनने के लिए सेवा प्राप्त करना काफी असामान्य है - क्या ऐसा कोई कारण है जिसे आप करना चाहते हैं? – Cocowalla
@ कोकोवाल्ला: सेवा एक कार्यकर्ता प्रक्रिया का हिस्सा है, इसलिए समय पर एक से अधिक हो सकते हैं, और हम उन समाधानों को देख रहे हैं जिनमें .NET TCP पोर्ट शेयरिंग शामिल नहीं है। – ngoozeff
संभावित डुप्लिकेट [मैं डब्ल्यूसीएफ सेवा का सुनवाई पता/बंदरगाह कैसे प्राप्त कर सकता हूं?] (Http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-address-port-of -ए-डब्ल्यूसीएफ-सेवा) – mafu