4

通信オブジェクトSystem.ServiceModel.Channels.ServiceChannelは、Faulted状態であるため、通信に使用できません。

WindowsアプリケーションがwsDualHttpBindingを介してWindowsサービスとしてホストされているWCFと通信しようとすると、このエラーが発生します。WCFは、シリアルポートを介してデバイスと通信するために使用されます。WCFWindowsサービスを介してコマンドを頻繁に送信するために使用されるWindowsアプリケーション。

スタックトレースは次のとおりです。

スタックトレース:System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()at System.ServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs、TimeSpan timeout)at System .ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime operation)at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

[0]で再スローされた例外:System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData、Int32 type)atGridSplitter.CommandServiceReference。 ICommandService.SendToMultipleChannel(String [] channel、Int32 [] [] locid、String cmd、Int32 cmdData)at GridSplitter.CommandServiceReference.CommandServiceClient.SendToMultipleChannel(String [] channel、Int32 [] [] locid、String cmd、Int32 cmdData)at GridSplitter.MainWindow.bwChkAndSendRedeploy_DoWork(オブジェクト送信者、DoWorkEventArgs e):11/9/2012 11:05:58 AM

  1. なぜサービスが故障状態になっているのか理解できませんでした。
  2. この例外をキャッチして、パッチワークを実行する必要がありますか(推奨されている場合)?
  3. TCPバインディングは、この例外を回避/削除するのに役立ちますか?
4

1 に答える 1

4

ChannelFactory問題は、サービス呼び出しがエラーを生成した後に、コードがサービス プロキシのインスタンス (SvcUtil によって生成された、または から直接作成されたサービス リファレンス) を使用していることです。WCF の実装方法では、サービス プロキシを使用した呼び出しでエラーがスローされると、そのサービス プロキシを "再利用" することはできません。

WCF 固有の要件については、この適切な投稿に示されている行に沿って、適切な例外処理ロジックを記述する必要があります。これは、使用するプロキシを構成する実際のバインディングに関係なく実行する必要があります。

于 2012-11-14T13:28:34.797 に答える