问题标签 [pollingduplexhttpbinding]
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.
wcf - WCF 服务因自定义数据类型而中断
我遇到了 WCF 服务正常工作的问题。我正在尝试创建一个双工服务,但每当我尝试返回自定义数据类型时,它都会破坏客户端。
如果我删除 GetTestData 一切正常。当我添加它时,客户端的一切都会中断。似乎我可以通过取消选中“在引用的程序集中重用类型”来修复它,但我不确定这样做是否有负面影响。
这是代码
ITestService.cs
测试服务.cs
测试数据.cs
wcf - 在 app.config 控制台应用程序中配置轮询双工
我在控制台应用程序中配置轮询双工绑定时遇到问题。这是我收到的错误:
Configuration binding extension 'system.serviceModel/bindings/pollingDuplexHttpBinding' could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly.
另外,这是我的 app.config 中的一个片段:
问题
- 甚至可以在控制台应用程序中配置轮询双工吗?
- 如果是这样,我做错了什么?
谢谢
wcf - WCF 服务清除缓冲区
我目前正在开发 WCF 服务并且有一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道将大数据包相当快地发送回客户端。
为了停止,我向服务器发送一条消息,告诉它停止。然后它通过回调通道发送一条消息,确认这一点,让客户端知道。
问题是一堆数据包被缓冲起来通过回调通道发送到客户端。这会导致等待确认返回的时间很长,因为它必须等待所有数据首先通过。
有什么方法可以清除服务器端回调通道的缓冲区?我无需担心丢失数据,只需将其丢弃并立即发送确认消息即可。
wcf - 在 Mac 上的浏览器 Silverlight 客户端中轮询双工服务失败
我们有一个 Silverlight 客户端,它在 Mac 上运行“浏览器外”。此客户端通过轮询双工绑定使用 WCF 服务。
在客户端中,我正在监听 System.ServiceModel.DuplexClientBase 派生的“InnerChannel”属性公开的“Faulted”事件,它代表客户端的服务。
恰好一分钟后,该“故障”事件被触发,之后通道不再工作,即当服务器尝试通过回调通道发送消息时,它会收到超时异常。
这是我的一个理论:我怀疑客户端中的底层轮询操作有 1 分钟的超时。在服务器端,pollingDuplexHttpBinding 部分的 serverPollTimeout 属性设置为超过一分钟。这意味着如果服务器在此期间没有任何信息可告诉客户端,则服务器会持有一个轮询请求超过一分钟。我怀疑这揭示了客户端轮询消息中的超时。为了测试我的理论,我将 serverPollTimeout 设置减少到不到一分钟,而且确实 - 没有显示问题。
在客户端,有PollingDuplexBindingElement.ClientPollTimeout属性,根据此博客,该属性正是应该告诉客户端等待一分钟以上的设置。此设置的默认值为 5 分钟,我什至明确设置了它——但问题仍然存在(没有上述解决方法)。
请注意,此问题仅在浏览器客户端之外的 Mac 上发生。
总结一下,这是我的问题:
- 我如何/在哪里可以看到描述性错误消息,准确说明这里的问题是什么?
- 为什么它只发生在浏览器客户端之外的 Mac 中?
- 有人可以证实我的理论吗?
- 如果我的理论是正确的——我如何才能真正为客户端中的轮询请求设置超时?
wcf - 如何清除服务器上的传出消息缓冲区?
我编写了一个服务,使用PollingDuplexHttpBinding
它有一个使用它的 Silverllight 客户端。我的服务基本上有给定数量的客户端向服务发送他们的数据(经常是每秒,并且数据非常大,每次调用大约 5KB),并监听其他客户端向服务发送的新数据被路由到他们,非常类似于聊天室架构。
我注意到的问题是,当客户端通过 Internet 连接到服务时,几分钟后服务的响应变得缓慢并且回复变得滞后。我得出的结论是,当服务主机的上传容量达到时(互联网上传速度,服务器上只有大约 15KB/s),其他客户端发送的消息会在有可用带宽时进行相应的缓冲和处理。我想知道如何才能限制服务用于存储从客户端接收到的消息的缓冲区的占用?我的客户获得所有数据并不是那么重要,而是他们获得其他人发送的最新数据,因此实时连接是我正在寻找的,以保证交付为代价。
简而言之,我希望能够在服务填满时清理我的队列/缓冲区,或者达到某个上限并开始用收到的呼叫再次填充它以消除延迟。我该怎么做呢?MaxBufferSize
我需要在服务端和客户端减少该属性吗?或者我是否需要在我的服务中编写此功能?有任何想法吗?
谢谢。
编辑:
这是我的服务架构:
服务配置:
客户端通常会在 500 毫秒到 1000 毫秒之间调用服务,如下所示:
_client.PublishNotificationAsync(byte[] data);
并且回调将通知客户端其他客户端发送的通知:
回顾一下,当客户端数量增加,并且服务主机通过互联网上传速度受到限制时,服务发送给订阅者的消息会在某处缓冲并在队列中处理,这就是导致问题的原因,我不知道这些消息在哪里缓冲。在 LAN 中,该服务运行良好,因为服务器的上传速度等于其下载速度(对于 100KB/s 的传入呼叫,它发出 100KB/s 的通知)。这些消息在哪里缓冲?我怎样才能清除这个缓冲区?
我做了一些实验来尝试查看消息是否在服务中缓冲,我尝试在客户端上调用此方法,但它始终返回 0,即使一个客户端仍在接收其他人发送的通知 4- 5 分钟前:
wcf - WCF >> DUPLEX >> SILVERLIGHT >> pollingDuplexHttpBinding = 非常慢!大延迟
我有
WCF 与 wsDualHttpBinding 绑定用于 WPF 应用程序-> 效果很好!立即获取 WCF 发布方法。
silvelight 4 的 pollingDuplexHttpBinding 的另一个绑定 --> 非常慢 --> wpf 应用程序得到它后延迟 30++- 秒(WPF 立即得到它)
这是为什么 ?最好的谷歌结果是
我真的不知道如何继续......
wcf - PollingDuplexHttpBinding Endpoint NotFound - 内容不匹配
我创建了一个 WCF 托管服务,该服务在控制台中运行,以供 silverlight 访问。我的 PolicyHost 运行良好,我的服务加载良好。我可以去我的 silverlight 客户端并执行“添加服务参考”,让 VS2010 使用适当的 wsdl 下载我的服务参考并生成一个代理。
但是,当我调用第一种方法时,我每次都会收到以下消息。
远程服务器返回错误:NotFound。
通过 Wcf TraceLog Viewer 深入研究一下,我看到了以下内容;
内容类型 application/mspd1 已发送到需要 application/soap+msbin1 的服务。客户端和服务绑定可能不匹配。无法处理消息,因为内容类型“application/mspd1”不是预期的类型“application/soap+msbin1”
现在,如果我删除回调,删除 DuplexPolling 并将其放回 WsHttpBinding - 我的方法调用似乎工作正常。
在尝试将双工轮询配置为正常工作时,我是否遗漏了什么?
格雷格
wcf - Visual Studio 未生成 PollingDuplex 代理客户端
Visual Studio 没有为我的 PollingDuplex 代理创建构造函数。WCF 客户端应该有 8 个构造函数,其中一个构造函数包括 HttpPollingDuplexBinding 对象和一个端点地址。但是只有5个重载并且客户端没有Callback方法。我该如何解决这个问题?
wcf - 如何在代码中为自托管 WCF 服务注册自定义绑定扩展?
我需要一个建议来为我的自托管 WCF 服务注册我的 Silverlight 双工通信(使用 PollingDuplexHttpBinding)的自定义绑定扩展。
以下是我从这个 msdn 页面获得的绑定详细信息。
我需要通过代码隐藏将上面的 xml 代码添加到我的自定义绑定中。
wcf - Silverlight 轮询双工超时
我目前正在开发一个实现轮询双工服务的应用程序。我遇到了客户端中止的问题,我不确定使用客户端的原因或正确的处理方式。
现在我正在让客户收到这样的问候消息
然后我只是在课堂上坚持使用它并像这样使用它发送东西
发送数据之间可以有任意时间,因为它取决于用户交互。我遇到的问题是我收到以下错误。
这是处理客户的错误方式吗?知道为什么它会中止吗?
即使我每秒发送一次消息,它似乎也能做到这一点,无论如何,它似乎只是在一段时间后超时。