2

WCF を使用して、実行中の 2 つの Windows アプリケーション間で IPC をセットアップしようとしています。私は、このソリューションを実装する他の (より良い?) 方法があることを知っていると言って始めたいと思います。ただし、既存の設計上の考慮事項/制約がいくつかあるため、以下を使用する必要があります: - netTcpBinding - 双方向通信をサポートするための DuplexChannelFactory<>

MS Windows を実行する単一の専用ハードウェアにすべてをインストールするため、すべてのアプリケーション、サービスなどは同じマシンに存在します。

したがって、回路図は次のようになります WPFApp1 (ReportingFacilityInterface 定義を含む) 通知を WPFApp2 への個別のコールバックとして返します ^ | | | V ReportingFacilityInterfaceProxy ^ | | | V WPFApp2 (WPF1 ReportingFacilityInterface オブジェクトで公開されたメソッドを呼び出す必要があります)

WCF の「サービス」クラスとコントラクトを作成しました。通信を容易にするためにプロキシ dll を使用しています。

イベントのシーケンスは次のとおりです。


1) WPFApp1 が起動し、公開されたサービス クラスのインスタンスをインスタンス化します。

ReportingFacilityInterface = new ReportingFacility.ReportingFacilityInterface(); 

これで問題なく起動します。

2) WPFApp2 の起動とプロキシ オブジェクトのインスタンスの初期化

reportingFacilityProxy = new ReportingFacilityInterfaceProxy.ReportingFacilityProxy();

これにより、プロキシ オブジェクトがインスタンス化され、これが呼び出されます。

reportingFacilityInterface = DuplexChannelFactory<IReportingFacilityInterface>.CreateChannel(objContext, "RPIEndPointConfiguration"); 

これは実行され、正常に返されるようです。

3) WPFApp2 はオブジェクトに対して (プロキシ経由で) を呼び出します

 reportingFacilityInterface.Initialize(configuration); 

次の詳細で例外が発生します。

net.tcp://localhost:8732/ReportingFacility に接続できませんでした。接続の試行は、00:00:02.1931255 の期間継続しました。TCP エラー コード 10061: ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8732

CurrPorts アプリケーションを使用して現在のポートの使用状況を調べたところ、ポート #8732 が私のマシンで現在アクティブ/使用されているポートのリストにないことに気付きました。

私はかなりグリーン @ WCF の世界なので、ここで困惑しています。上で述べたように、これらはすべて Windows 7 ハードウェアの同じ (専用の) 部分で実行されているため、権限/役割は問題になりません。ここにかなり近づいていると思いますが、何かが足りないだけです。

ありがとう、ジョンB

4

2 に答える 2

0

私は:

  1. サーバー構成を確認して、サービス エンドポイント アドレスを確認してください
  2. サービス トレース ビューアー ツール ( SvcTraceViewer.exe )を実行します。
  3. ブラウザーから確実にアクセスできるように、いくつかの basicHttpBinding エンドポイントを追加します。
于 2013-04-13T21:02:03.713 に答える