我寫這個問題的原因是,當我試圖通過WCF服務與Windows服務和WPF應用程序之間進行通信時,我似乎遇到以下錯誤:一個NetNamedPipe結合:使用WCF NetNamedPipe與客戶端進行通信的Windows服務
System.ServiceModel.EndpointNotFoundException:沒有終點 在net.pipe聽://本地主機/ Pipe_SendInfo
現在血淋淋的細節。
好吧,我有一個定期執行代碼的Windows服務,我想讓用戶知道服務內部發生了什麼。所以我讀到,我可以通過NetNamedPipe WCF服務完成此操作。我創建了兩個測試應用程序,併成功地將消息從一個進程發送到另一個進程。然後我試圖發送從Windows服務消息發送到客戶端應用程序(在同一臺機器上),並至今慘敗:(
我的Windows服務本質上是做這個(要發送的信息):
ChannelFactory<SkipSyncLib.ISendInfo> pipeFactory =
new ChannelFactory<SkipSyncLib.ISendInfo>(
new NetNamedPipeBinding(),
new EndpointAddress("net.pipe://localhost/Pipe_SendInfo"));
pipeFactory.CreateChannel();
pipeFactory.SendInfo(info);
和應該接受信息的應用程序做到這一點,當它啓動時:
public void Start()
{
HostService = new ServiceHost(this, new Uri[] { new Uri("net.pipe://localhost") });
HostService.AddServiceEndpoint(typeof(ISendInfo), new NetNamedPipeBinding(), "Pipe_SendInfo");
try
{
HostService.Open();
}
catch (Exception exc)
{
//Error handling
}
}
起腳的是,而Windows服務失敗草草收場找到端點我還有一個控制檯應用程序,它能夠發送信息到正在運行的客戶端應用程序成功。所以邏輯會告訴我,這可能與用戶有關。但我無法弄清楚。
任何想法?我應該放棄命名管道並使用http綁定?
我剛剛在今天早些時候發現了有關命名管道,所以如果答案很明顯,請保持溫柔。
感謝
你在運行什麼操作系統?如果Windows Vista或更高,請看看這裏:http://stackoverflow.com/questions/7477813/getting-endpointnotfoundexception-with-netnamedpipebinding-in-c-need-to-create。 – 2012-03-14 04:13:38
服務器2008年。我找到了一種方法使其工作。客戶端應用程序和Windows服務需要作爲同一用戶運行,以便命名管道可用。 – Jose 2012-03-14 15:01:22