有我碰到了昨天晚上,我現在已經解決了兩個問題,但我不是100%肯定,爲什麼我做了什麼已經解決了他們,並希望也許有人可以提供一些因爲我已經翻過了很多岩石,並沒有運氣!兩個獨特的命名管道相互矛盾和InvalidCredentialException
第一個問題
的第一個問題是,我有兩個獨特的命名管道這是兩個獨立的程序:
- net.pipe://本地主機/ superuniquepipe1
- 網。管://本地主機/ superuniquepipe2
但是,第二個方案推出會拋出異常(我貝利前一天它是AddressAlreadyInUseException)由於地址已被使用而打開ServiceHost。
的方式我是實例這些ServiceHosts如下:
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();
所以我指定localhost第一的基地址,然後添加端點時指定它的休息,順便我決定,這是改變代碼如下:
this.host = new ServiceHost(this);
this.host.AddServiceEndpoint(typeof(IHostType), new NetNamedPipeBinding(), "net.pipe://localhost/superuniquepipe2");
this.host.Open();
上午我在說這個工作的原因,糾正,是因爲它僅檢查基址,而不是我試圖添加的終點?並使用第二個代碼示例有效/安全的方式來讓多個程序在「localhost」上進行監聽?
第二問題:
在試圖修復以上,我已經從本地主機改變基地址到多個不同的唯一的字符串的例如「net.pipe:// rawrwhyisntthisworkingsadface」,但這樣做時,我會從客戶端試圖建立連接的InvalidCredentialException呈現(見下面的代碼)
我的印象是一個命名管道可以從字面上是下命名任何東西,任何人都可以點亮這個?
ChannelFactory<IHostType> factory = new ChannelFactory<IHostType>(new NetNamedPipeBinding(), new EndpointAddress("net.pipe://rawrwhyisntthisworkingsadface/superuniquepipe2"));
IHostType proxy = factory.CreateChannel();
proxy.CallSomeMethodAndGetAnException();
任何投入將不勝感激,因爲我說我已經解決了這個問題,只是想知道爲什麼我的解決方案的工作,但如果你我是如何解決已經看到它的一個缺陷,並可以建議更好這樣做請這樣做:)的方式
爲了擴大這一點,我得到我相信同樣的問題,這是個例外: ** [TYPE]:** System.ServiceModel.AddressAlreadyInUseException ** [信息]:** 無法監聽管道名稱'net.pipe:// localhost /',因爲另一個管道端點已經在監聽該名稱。 – ebol2000 2015-07-16 22:36:16