पिछली रात में मैंने दो समस्याएं हल की हैं जिन्हें मैंने अभी हल किया है, लेकिन मुझे 100% यकीन नहीं है कि मैंने जो किया है, उन्हें हल किया है और उम्मीद कर रहा था कि कोई कुछ कुछ दे सकता है अंतर्दृष्टि क्योंकि मैं बहुत सारे चट्टानों को बदल रहा हूं और कोई भाग्य नहीं है!दो अद्वितीय नामित पाइप विरोधाभासी और अमान्य क्रैडेंशियल एक्सेप्शन
- net.pipe: // स्थानीय होस्ट/superuniquepipe1
- शुद्ध
पहली समस्या
पहला मुद्दा है कि मैं दो विशिष्ट नामित पाइप कि दो अलग-अलग कार्यक्रमों में थे था। पाइप: // localhost/superuniquepipe2
हालांकि, लॉन्च करने वाला दूसरा प्रोग्राम अपवाद फेंक देगा (मैं बेली पहले से ही उपयोग में होने वाले पते के कारण ServiceHost खोलते समय यह पता था ADADreadyInUseException)।
Uri[] baseAddresses = new Uri[] { new Uri("net.pipe://localhost") };
this.host = new ServiceHost(this, baseAddresses);
this.host.AddServiceEndpoint(typeof(IHostType), new NetNamedPipeBinding(), "superuniquepipe1");
this.host.Open();
तो मैं स्थानीय होस्ट पहले के आधार पता तरीका निर्दिष्ट करें, और फिर जब अंत बिंदु जोड़ने बाकी निर्दिष्ट करते हैं,:
तरह से मैं था इन ServiceHosts instantiating इस प्रकार था मैं का समाधान इस कोड को परिवर्तित करने के लिए था इस प्रकार है:
this.host = new ServiceHost(this);
this.host.AddServiceEndpoint(typeof(IHostType), new NetNamedPipeBinding(), "net.pipe://localhost/superuniquepipe2");
this.host.Open();
एम आई कारण यह काम किया कह में सही कर क्योंकि यह केवल आधार पतों की जाँच कर रहा था और नहीं endpoint मैं जोड़ने की कोशिश कर रहा था? और दूसरा कोड नमूना "लोकलहोस्ट" पर कई प्रोग्राम सुनने के लिए वैध/सुरक्षित तरीका का उपयोग कर रहा है?
दूसरी समस्या:
ऊपर ठीक करने के लिए की कोशिश में, मैं आधार का पता स्थानीय होस्ट से अलग अद्वितीय तार के एक नंबर करने के लिए जैसे बदल गया था "net.pipe: // rawrwhyisntthisworkingsadface", लेकिन ऐसा करने पर मुझे एक कनेक्शन स्थापित करने की कोशिश कर रहे क्लाइंट से एक अमान्य प्रमाणीकरण अपवाद प्रस्तुत किया जाएगा (नीचे कोड देखें)
मैं इंप्रेशन के तहत था नामित पाइप सचमुच हो सकता है कुछ भी नाम दिया, क्या कोई इस पर कुछ प्रकाश डाल सकता है?
ChannelFactory<IHostType> factory = new ChannelFactory<IHostType>(new NetNamedPipeBinding(), new EndpointAddress("net.pipe://rawrwhyisntthisworkingsadface/superuniquepipe2"));
IHostType proxy = factory.CreateChannel();
proxy.CallSomeMethodAndGetAnException();
किसी भी इनपुट बहुत सराहना की जाएगी जैसा कि मैंने कहा मैं इस मुद्दे को हल कर दिया है और सिर्फ जानना क्यों मेरे समाधान काम चाहते हैं, लेकिन अगर तुम मैं इसे कैसे हल कर ली है में एक दोष देख सकते हैं और एक बेहतर कर सकते हैं सुझाव कर यह कर लें, ताकि :) कर के रास्ते
इस पर विस्तार करने के लिए, मैं एक ही समस्या मैं belive हो रही है, और इस अपवाद है: ** [TYPE]: ** System.ServiceModel.AddressAlreadyInUseException ** [MESSAGE]: ** नहीं कर सकते पाइप नाम 'net.pipe: // localhost /' पर सुनें क्योंकि एक और पाइप एंडपॉइंट पहले से ही उस नाम पर सुन रहा है। – ebol2000