0

組み込み Linux を実行するデバイス (たまたま Pelco ブランドのビデオ ドーム) の SOAP サービスに対する VS2010 Dotnet 4.0 クライアントを開発しています。デバイスの SOAP サーバーを制御できません。ベンダーは、サービス参照として正しくロードする WSDL ファイルを提供しています。

これを理解するために、コマンド ライン デスクトップ クライアントを使用しています (コードをサービスに移行する前に)。

少し単純化すると、さまざまなサービスの SOAP 呼び出しは次のような形式になります。

 service.SetPosition(pan,tilt,zoom)
 var pos = service.GetPosition();

など。それらは基本的に機能し、期待されていることを行います。

問題は次のとおりです。ときどき断続的に、私が (まだ) 理解していないパターンで、これらのサービス呼び出しのランダムな 1 つが CommunicationException をスローし、その Message は

 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);

この場合、PositioningControlPortTypeClientWSDL をサービス参照としてロードすると、WSDL を介して定義されます。

dotnet 4.0 / wcf / soap に HTTP/1.0 を強制的に使用させる方法はありますか?

サービス クライアントがこの例外をスローする前に、この例外をスローしようとしていることを検出する方法はありますか?

各サービス オブジェクトを 1 回だけ使用してから破棄する必要がありますか?

他に知恵は?

4

1 に答える 1