问题标签 [duplex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2812 浏览

wcf - WCF 两种方式的 HTTP 通信绕过防火墙

我想使用 WCF 在不打开客户端端口的情况下启用双向通信。

我正在开发类似 P2P 应用程序(类似于 teamviewer/logmein)的东西,您不需要打开端口进行通信。

如何在客户端不打开端口的情况下通过 HTTP/HTTPS 实现双向通信?

注意:可以在服务器中打开端口 80...没有问题。

谢谢

0 投票
1 回答
2326 浏览

wcf - 如果 WCF 双工会话过早关闭,如何收到通知

我在 WCF 中有一个使用 net.tcp 和 Duplex 回调的发布/订阅方案。我有许多订阅该服务的客户,这很好用。但是,有时客户端会在没有取消订阅的情况下关闭(客户端计算机进入睡眠状态、计算机崩溃、网络连接被中止等),这会导致当我通过回调列表回调时抛出异常。

现在,我当然可以捕获异常并删除有问题的回调,但这对我来说似乎不太像异常情况,并且更接近“预期行为”。

是否有在连接关闭时触发的事件会通知我,以便我可以从列表中删除回调?考虑到这是 net.tcp 而不是 HTTP,所以应该知道连接状态。

显然,框架知道连接已关闭并被释放,因为异常类似于“尝试调用已释放对象”。

编辑:

我应该指出,这不是一个长期运行的事务。在发布/订阅场景中,这是一个长期运行的连接。基本上,回调用于在各种事件发生时通知瞬态订阅者。每个事件都是孤立的,不会长时间运行。

0 投票
2 回答
579 浏览

wcf - silverlight 3.0 中的 wcf pollingduplex 连接限制

我已经为消息服务构建了一个 Silverlight 应用程序。我的问题是 10 次连接后 silverlight 应用程序断开连接。但我想要它无限或数千。我在这个问题上花了很多时间。关于我的申请的一些观点:

  1. 我已经构建了 3 个项目,例如 silverlight 项目、web 项目、wcf 服务项目。
  2. 我在使用 we.bconfig 配置的 wcf.that 中使用 PollingDuplexHttpBinding。
  3. 在 silverlight 项目中,我添加了服务引用并使用 pollingduplex 绑定创建服务对象。
  4. 我已经配置了 wcf 服务项目的 web.config,例如:

  5. 我已经在 iis6 服务器 2003 服务器上测试了这个项目,但问题相同。

请帮我解决这个问题。

谢谢

0 投票
2 回答
30100 浏览

c# - 在 WCF 双工合同中检测客户端死亡

我正在尝试构建一个 SOA,其中客户端可以在服务器上执行长时间运行的查询,并且服务器使用回调进行响应。

我希望能够检测客户端是否断开连接(通过用户启动的关闭、未处理的异常或网络连接丢失),以便服务器可以选择取消昂贵的请求。

我正在测试各种失败案例,但似乎无法触发某些事件处理程序。

测试失败案例:请求后杀死客户端进程。使用像 CurrPorts 这样的程序来关闭 TCP 连接。

测试代码:

处理这类失败案例的最佳实践是什么?我希望能够使用底层 tcp 连接来检测其中一些东西。

0 投票
0 回答
846 浏览

wcf - 在 Windows 窗体中使用 WCF 双工服务

我有一项wcf双面服务,在 Silverlight 中工作正常。但同样的服务想要在 Windows 窗体中消费。这怎么可能。我的代码是:

它给了我一个错误:

绑定“CustomBinding”不支持创建任何通道类型。这通常表明 CustomBinding 中的 BindingElement 堆叠不正确或顺序错误。堆栈底部需要传输。BindingElements 的推荐顺序是:TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、Transpor

请提供一个示例代码如何WCF在 Windows 窗体中使用双工服务。

0 投票
1 回答
13379 浏览

c# - How to create simple C# full-duplex TCP/IP stream socket connection?

How to create simple C# full-duplex TCP/IP stream socket connection?

What do I need? I need -

  • Open Source Libs
  • Tutorials
  • Blog posts/Articles

0 投票
1 回答
207 浏览

wcf - 双工 WCF + COM 对象的静态集合

我正在尝试构建一个 WCF 服务,该服务公开我没有原始源的特定 COM 对象的功能。我正在使用双工绑定,以便每个客户端都有自己的实例,因为每个特定实例都有事件绑定,这些事件通过回调(IAgent)传递。似乎存在死锁或其他什么,因为在第一个操作之后,我的服务在我的第二个操作的锁定处阻塞。我已经尝试实现这些自定义 STA 属性和操作行为(http://devlicio.us/blogs/scott_seely/archive/2009/07/17/calling-an-sta-com-object-from-a-wcf-operation。 aspx)但我的 OperationContext.Current 始终为空。非常感谢任何建议。

服务

收藏:

第一个动作:

第二个动作:

0 投票
3 回答
4602 浏览

wcf - WCF 双工通道在使用回调时关闭

我的 WCF 服务使用 netTcpBinding,并且有一个回调对象。

我需要为多个并发客户端提供服务,并维护会话,因此服务装饰有

为了避免线程死锁,回调类用

我用来SynchronizationContext在 UI 线程中执行该方法。

问题是有时通道 gest 无缘无故关闭(ICommunicationObject.Closing事件被触发)。之后,我在任何后续服务调用中都会遇到异常。

查看跟踪文件,最后一条消息是回调调用,但是,回调方法永远不会被调用。没有例外。

经过一些调试后,我发现只有在同步操作中间进行回调调用时才会发生这种情况。步骤是这样的:

  1. 调用服务A方法IsOneWay=true
  2. 调用服务B方法IsOneWay=false
  3. A调用回调方法,但B仍在执行。

这应该不是问题,因为回调有UseSynchronizationContext=false,因此回调调用可以在单独的线程中进行。

我无法在更简单的情况下重现该问题。在一个简单的项目中按照这些步骤成功执行。

对可能发生的事情或如何识别问题有任何想法吗?

0 投票
10 回答
73518 浏览

c# - 找不到与方案 net.tcp 匹配的基地址

在尝试设置双工模式通道时,我已将文件传输服务从 basicHttpBinding 移至 netTcpBinding。我还启动了我的 net.tcp 端口共享服务。

我目前在开发中,并且在我们将应用程序移动到开发服务器之前,我在 xp 盒子上自行托管。所以,目前,我无法访问 IIS。

像这样配置我的服务后:

而且,我的绑定是这样的:

当我正确浏览 SVC 文件时出现以下错误:

找不到与具有绑定 NetTcpBinding 的终结点的方案 net.tcp 匹配的基地址。注册的基地址方案是 [http]。

在线阅读表明,为了解决这个问题,我需要将 net.tcp 绑定添加到 IIS 中应用程序的绑定中。但是,如果我是自托管并且无法访问 IIS,我该怎么办?顺便说一句,如果您正在阅读本文并且“确实”拥有 IIS,请执行以下操作:右键单击 IIS 中的虚拟目录/应用程序 -> 管理应用程序 -> 高级设置。并且,在 Enabled Protocols 部分,添加 net.tcp。

有任何想法吗?


更新:我以为我有它的工作,但它仍然没有工作。这是我现在所拥有的:我仍然收到“找不到与方案 net.tcp 匹配的基地址”错误。我已更改所有基址以反映您的建议。这是我现在拥有的:

我用“net.tcp://localhost:2544”和“net.tcp://localhost:8001”都试过了。我是否需要在我的防火墙设置中添加(允许)某些内容?还有其他建议吗?

这是我的 App.config 文件中的 filetransferservice 的 mexTcpBinding:

我仍然无法在我的网络应用程序中引用我的 FileTransferServiceClient。

再次感谢。

0 投票
1 回答
257 浏览

wcf - 如何在双工通道上发送故障?

客户端和服务器以双工模式进行通信。客户端有一个通用服务 (Action="*") 作为合约回调。

我希望服务器能够向我的客户发送故障。

我能怎么做 ?