簡體   English   中英

如何使客戶端自動檢測WCF服務是否關閉或連接斷開

[英]How to make client automatically detect if WCF service is down or lost connection

我看過很多線程,例如“ 檢測是否激活了wcf服務”,但是這些解決方案要求客戶端主動檢測WCF服務是否正在運行。 但是,如果我正處於事務處理中間並且WCF服務中斷或由於某種原因連接斷開了怎么辦? 在我的測試中,沒有拋出異常。 要么什么也沒有發生,要么旋轉的東西不斷旋轉。 我希望客戶端檢測服務/連接是否丟失,並優雅地告訴用戶它已關閉。 我在代碼中設置了超時:

NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
            binding.OpenTimeout = TimeSpan.FromSeconds(15);
            binding.SendTimeout = TimeSpan.FromSeconds(3000);
            binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
            this._engineChannel = new DuplexChannelFactory<IEngineApi>(this, binding, new EndpointAddress("net.pipe://localhost/Engine"));

但是,如果我正在進行交易,那么實際上什么也不會發生。 這些超時似乎沒有任何影響。

您可以使用以下兩種方法之一:

1

我要做的兩件事是進行telnet檢查,以確保WCF進程已打開套接字。

telnet主機8080我要做的第二件事是始終向我的WCF合同中添加IsAlive方法,以便可以調用一個簡單的方法來檢查服務主機是否正常運行。

公共布爾IsAlive(){返回true; }

來源: Ping WCF服務

2

使用WCF 4.0中引入的發現/公告功能

發現 取決於用戶數據報協議(UDP)。 UDP是無連接協議,客戶端與服務器之間不需要直接連接。 客戶端使用UDP廣播對支持指定合同類型的任何端點的查找請求。 支持該合同的發現端點將收到請求。 發現端點的實現將使用服務端點的地址響應客戶端。 一旦客戶端確定了服務,它將調用服務以建立呼叫。

簡單用法示例: http : //www.codeproject.com/Articles/469549/WCF-Discovery

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM