问题标签 [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.
debugging - WCF WSDualHttpBinding 的错误消息:无法自动调试服务
我目前正在研究一种解决方案,该解决方案需要同时使用 Silverlight 3.0 和标准 .NET 应用程序作为使用 WCF 实现的 Web 服务的客户端。Silverlight 客户端使用的 Web 服务部分需要双工功能,因此我在服务的一个端点上使用(仍然相当新的)PollingDuplexBindingElement。但是,PDBE 仅受 Silverlight 支持,因此我为其他客户端的服务添加了第二个端点,它使用 WSDualHttpBinding 作为绑定。这些其他客户端实际上并不需要双工,但由于服务器端合同的某些部分需要双工,因此像 WSHttpBinding 这样的标准单工绑定将不起作用。
由于奇怪的 Silverlight WCF 要求(例如,将 HTTP 500 错误响应重写为 HTTP 200 等),我正在通过自定义 ServiceFactory 类初始化我的服务,其关键部分如下所示:
而且(有点令人惊讶)一切正常。Silverlight/PollingDuplex 客户端都获得了整洁的回调(比 SL 2.0 好得多!),并且 .NET/WSDualHttp 客户端都可以很好地与服务器通信。
除了一件事。当我尝试调试应用程序时,Visual Studio 在通过 WSDualHttp 遇到第一个单纯形调用时会抛出以下对话框:
“无法自动调试 'MyCompany.Service'。无法调试远程过程。这通常表示 Web 服务器上尚未启用调试。有关详细信息,请参阅帮助。”
错误消息不是很准确。事实证明,您可以通过任何双工(单向)调用对 Web 服务进行逐步调试,但不能通过任何单工(双向)调用。
现在,当然,我已经检查以确认我的 web.config 设置正确,即其中包含以下行:
我一直在反对这个问题足够长的时间,以至于我整理了一个相当简单的复制品(可在此处获得)来证明这个问题。据我所知,当您在 IIS 中使用 WSDualHttpBinding,然后尝试对该服务进行标准单工调用时,它就会出现。
我最初的解决方法是将 Duplex 从服务的 Simplex 部分中分离出来,此时一切正常——但代价是客户端上的对象模型重复,这并不理想。所以我把所有东西都移回了一个服务,但不能调试任何东西肯定是一件痛苦的事。
有没有其他人遇到过这个问题,或者有什么建议?
FWIW,我在MSDN上或多或少地发布了同样的问题,没有任何建议,并且我尝试使用 MS Connect打开一个错误,但同样,该季度还没有任何帮助。
有任何想法吗?
wcf - WCF 轮询双工服务是否可供其他客户端使用?
我正在使用 silverlight 客户端编写服务器应用程序。在某些时候,我希望非 Silverlight 客户能够使用我的服务。现在我已经编写了一些 WCF 服务,这些服务会被轮询,但我对响应能力并不满意。我正在考虑将代码切换到使用 Silverlight/WCF 双工轮询,但如果我这样做,我是否会坚持使用 Silverlight 作为我唯一的客户端?使用普通的 WCF http 服务编写我自己的长轮询服务会更好吗?
wcf - 双工 WCF 服务在第 11 次调用时挂起
我有一个双工 WCF 服务,它在神奇的 10 个代理实例之后挂起。客户端上的具体错误是:
“System.TimeoutException:发送到 net.tcp://localhost:8080/RoomService/netTcp 的请求操作未在配置的超时 (00:00:59.9960000) 内收到回复”。
服务器上没有任何明显的错误消息。
请注意,这不是标准的、明显的问题,即未能关闭我的代理连接,因为我在打开下一个代理连接之前适当地关闭了代理连接的每个实例:
我已经将我的节流行为设置为 500 同步所有内容:
我已将服务的 ConcurrencyMode 设置为 Multiple,并尝试了 InstanceContextMode 的所有三个可能值。
我尝试过自托管服务,并将其托管在 IIS 中,并且在每个服务上都得到了相同的结果。
我已经尝试过 NetTcpBinding、WSDualHttpBinding 和 PollingDuplexBinding(在 Silverlight 上),每个结果都相同。我不能尝试 BasicHttpBinding 或 WSHttpBinding,因为这是一个双工服务。
在我的代码中有一个地方我启动了多个线程(同时执行多个回调),但出于故障排除的目的,我已经注释掉了这一点,它并没有产生任何影响。
在客户端上,我尝试为每个测试使用新代理,并在所有测试中重用相同的代理,但没有任何运气。我尝试为每个代理创建一个新的 InstanceContext,并在所有代理中重用相同的 InstanceContext,但同样没有运气。
无论我做什么,在我的测试工具中执行第 10 次测试之后,下一次对服务的调用都会挂起。
关于我可能做错了什么的任何想法?
postscript - 双面后记 - 强制新页面
有没有一种简单的方法可以在不插入空白页面的情况下将后记页面强制到新的物理页面上?
例如,假设我有一个包含 10 个附言页的 PS 文档,需要打印到不同的文档包中:
1 - 物理页面 1 正面
2 - 物理页 1 背面
3 - 物理页面 2
4 - 物理页面 3 正面
5 - 物理页 3 背面
6 - 物理第 4 页正面
7 - 物理第 5 页
8 - 物理页 6 正面
9 - 物理页面 7 正面
10 - 物理页 7 背面
我可以将整个文件设置为双工,并在第 3、6、7 和 8 页之后插入虚拟页面,但我想避免这种情况,因为我们的打印机按每次展示而不是按物理页面收费。
我希望有一个简单的 PS 语法对应于“强制到首页”。
wcf - 支持 Duplex 场景的 WCF 测试工具?
有谁知道支持回调的工具?
c# - 群集环境中的 WCF 双工通信
因此,我查看了人们为 Duplex Communications 创建的示例示例,即由 IIS 托管并通过 Silverlight 连接时。有很多这样的例子(这篇 MSDN 文章很棒),但都使用相同的范例:
用户 A 连接到服务器 A,它将他放在内存列表中以接收未来的更新。
用户 B 连接到服务器 A,它通知列表中的所有用户有人“登录”。
...但是当
用户 C 连接到服务器 C,服务器 C 的内存列表不包含用户 A 或 B。
问题是我希望在集群(网络场)环境中实现这一点。这使事情变得复杂,因为我无法验证哪台机器最终会执行 wcf 调用,因此很难将任何消息转发给所有其他用户。
我能想到的最佳方案是让客户端实际连接到某种路由服务,该服务接收传入请求并将客户端转发到特定机器。当然,这样我就失去了网络农场的好处,因为一台机器有效地处理了所有传入的请求。
一个不太有效的解决方案是让服务不断轮询某些东西(文件服务器上的文件或数据库中的表)以查找更改。一旦出现更改,将它们推送给客户端。这看起来像一个非常丑陋的婴儿。
我错过了什么?
更新 - 路由系统无法满足我的需要。我的托管公司不允许我通过 IP 直接连接到场中的特定机器。我只能连接到通用负载平衡器前端,所以不能保证我的用户会在同一台服务器上结束。
到目前为止,我们正在轮询数据库中的表以查找更改。看起来仍然像一个丑陋的婴儿。
wcf - 使用 Silverlight 应用程序设计大型 WCF 双工服务的最佳方式是什么?
我目前正在开发一个 Silverlight 应用程序,更准确地说是一个游戏,它有两种状态:大厅和游戏。
我创建了我的服务应用程序来反映该结构。我创建了一个 LobbyService 来处理所有与大厅相关的操作,并创建了一个 GameService 来处理所有实际的游戏操作。最重要的是,我还有第三个服务“GeneralService”,它处理两种状态之间共享的操作(聊天、系统消息等)。
我对设计本身很满意,但是阅读双工服务的可扩展性让我相信拥有 3 个服务可能不是一个好主意,这可能意味着同时打开 2-3 个双工通道每个客户端,从而在服务器端占用更多资源。
所以我的问题是,最好只为所有内容提供 1 个 WCF 服务 (.svc)(可能只是通过实施 3 个不同的数据合同),还是应该保留当前设计并将服务逻辑拆分为自己的服务?
谢谢!
.net - 为什么 WCF 不会使用传入消息的回复自动影响传出消息上的 To 标头?
我有一个服务,它发送一条将ReplyTo 标头设置为返回地址的消息。我以为 :
将自动调用我的客户端,但我收到此异常:
要在服务器端复合双工通道上发送消息,消息必须具有“Via”属性或“To”标头集。
我做错了什么还是 WCF 有点懒惰?
目前,我使用消息检查器的行为来使这些标头匹配,但这似乎有点 hacky...
ps:我正在使用 MSMQ
更新
我创建了两个绑定元素以使 msmq over duplex 工作它在codeplex上可用您可以看到整个示例,但就像我说的,由于这个错误,我使用消息检查器的行为将传出消息的 To 标头设置为传入消息的回复。奇怪的是,我的客户不需要这种行为,他也可以回调我的服务。
c# - 我可以使用 WCF 双工绑定来中继消息吗?
我有一个客户端应用程序、一个服务器和另一个客户端,我们称它为第三方。作为合同的一部分,我有一个回调接口,由第三方和客户端实现。
第三方将调用服务器操作(方法),然后服务器将触发回调,但不会调用第三方的回调,而是调用客户端的回调实现。
wcf - 10 个连接后,silverlight 从 wcf 双工断开
我开发了一个 Silverlight 聊天应用程序。在一个窗口中同时加载多个聊天窗口,每个聊天窗口都会创建一个到 wcf 双工服务的新连接。但是在每 10 个聊天窗口之后,它就会与 wcf 断开连接并停止工作。我为节流选项编写了一些代码,但它们不起作用。这是我的代码:-