2011-11-28 72 views
2

我創建了一個WCF服務,用戶需求是一次只有一個客戶端連接到該服務。WCF服務maxConcurrentSessions

所以我的參數maxConcurrentSessions的值設置爲1

它的工作很大,如果其他客戶端嘗試接收超時異常錯誤的具體時間後進行連接。

但我不喜歡超時異常錯誤發送到我想有一個像一個更具體的錯誤客戶端:

出現超時,因爲達到最大化的客戶對服務的數量。

就是這樣的。

有沒有辦法做到這一點?

感謝

+1

與另一個WCF服務包呢? – kenny

回答

0

您可以通過實現IErrorHandler

覆蓋默認的例外從MSDN

要明確控件的應用程序時 拋出異常行爲,實現IErrorHandler接口並將其添加到ErrorHandlers屬性中。 IErrorHandler使您能夠明確地控制生成的SOAP錯誤,決定是否將其發送回 客戶端,並執行相關的任務,如日誌記錄。錯誤 處理程序按其添加到 ErrorHandlers屬性的順序調用。

落實ProvideFault方法來控制被 返回給客戶端

故障消息還檢查了這一個.Net WFC/Web service exception handling design pattern

+0

是的,但我的目標是想知道是否因爲達到了maxconcurrent會話而發生此超時。我的意思是,客戶端A連接到服務,客戶端B連接但由於客戶端已連接到服務而進入隊列。客戶端B在X次後發生超時,因爲它無法進行連接。我如何知道發生超時是因爲達到了最大會話。有一種方法可以知道在WCF中是否達到了maxconcurrentsession? – Hugo

+0

看起來你正在改變你的目標:),你最初的目標是發送一個特定的消息,爲了實現你的新目標,一種方法可能是編寫你的自定義綁定並使用maxoutboundconnectionsperendpoint http://msdn.microsoft.com/en-us /library/system.servicemodel.configuration.tcpconnectionpoolsettingselement.maxoutboundconnectionsperendpoint.aspx –

+0

哈哈哈,也許我解釋不好謝謝你:) – Hugo