我正在Winform客戶端使用WCF服務。我通過多次調用WCF服務來創建數據緩存。通信對象不能用於通信,因爲它處於Faulted狀態
我的服務調用的一個失敗,因爲錯誤的...
The communication object,
System.ServiceModel.Security.SecuritySessionClientSettings
1 + ClientSecurityDuplexSessionChannel [System.ServiceModel.Channels.IDuplexSessionChannel],不能用於通信,因爲它處於故障state.`
代碼塊,這是拋出錯誤......
return _wcfClient.GetGroups().ToList());
這個錯誤行爲是隨機的。有時它沒有任何問題,有時它拋出給定的錯誤 我厭倦調試問題,但客戶端調用永遠不會到達WCF服務。
能否幫助我理解爲什麼會發生這種情況,我該如何解決這個問題。
與代碼更新問題:
我使用casle溫莎DI解決依賴關係。 這就是如何與DI註冊服務...
container.Register(Component.For<IWCFDataService>()
.AsWcfClient(DefaultClientModel.On(
WcfEndpoint.ForContract<IWCFDataService>().FromConfiguration("Binding_IWCFDataService")))
);
然後依賴將在類的構造函數注入
代碼來調用服務
public List<string> SomePRoperty
{
get
{
lock (_lockObjectSomePRoperty)
{
return _localvariable ?? (_localvariable = wcfClientResolvedFromDI.GetGroups().ToList());
}
}
set { _localvariable = value; }
}
請提供您撥打該服務的地方的完整代碼。 –
請參閱更新後的問題 – Abhash786
如果沒有更多細節,很難弄清楚。在這裏簡單猜測:請求之間的時間間隔是多少。這是一個DuplexSession,可能有很多原因,但試圖查看它是否不是由於不活動導致頻道關閉造成的。然後,您可能會引入「聽覺」請求來保持頻道的正常運行並解決問題。其他原因可能是您嘗試在您的某個請求和通道故障中推送太多數據,則應該以較小的塊(多個請求)發送您的數據。 – Tobiasz