我正在開發一個VS2010 Dotnet 4.0客戶端到一個運行嵌入式Linux的設備(Pelco品牌的視頻圓頂,因爲它發生)的SOAP服務。我無法控制設備中的SOAP服務器。供應商提供了正確加載爲服務引用的WSDL文件。檢測或避免客戶端CommunicationException當服務器關閉保持活動http連接
我正在使用命令行桌面客戶端來解決這個問題(在將代碼遷移到服務之前)。
簡化了一下,在各種服務的SOAP調用採取的形式是這樣的:
service.SetPosition(pan,tilt,zoom)
var pos = service.GetPosition();
等等。他們基本上工作和做預期的事情。
問題是這樣的:曾經在一段時間,間歇性,帶有圖案我還沒有(還)想通了,這些服務的一個隨機調用將引發的CommunicationException其消息是
The underlying connection was closed: A connection that was
expected to be kept alive was closed by the server.
這裏的我如何構造我的服務對象:
var binding = new System.ServiceModel.BasicHttpBinding();
uri = new Uri(/*the correct uri for the service*/);
address = new System.ServiceModel.EndpointAddress(u);
service = new PositioningControlPortTypeClient(binding, address);
在這種情況下,PositioningControlPortTypeClient
被通過WSDL定義,當我加載它作爲一個服務引用。
有沒有辦法強制dotnet 4.0/wcf/soap使用HTTP/1.0?
有沒有辦法檢測到我的服務客戶端在拋出異常之前會拋出異常?
我應該只使用每個服務對象一次,然後處理它嗎?
還有其他的智慧嗎?
完美,謝謝。 –