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 在对象上调用 a (通过代理)

 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

ID:

  1. 验证您的服务器配置以确保服务端点地址
  2. 运行服务跟踪查看器工具 ( SvcTraceViewer.exe )
  3. 添加一些 basicHttpBinding 端点以确保您可以从浏览器访问它
于 2013-04-13T21:02:03.713 回答
0

我通过转到服务并启动 Net.tcp 侦听器适配器解决了同样的问题。

此外,您可以在此处找到更多解决方案 http://blogs.ajithbhat.com/2010/06/tcp-error-code-10061-no-connection.html

于 2015-06-03T17:45:48.793 回答