8

我有一个 Windows 服务,可以将雷达枪的速度读数记录到数据库中。此外,我将该服务设为 WCF 服务器。我有一个订阅服务的表单和一个 CF 客户端,只要有满足特定标准的读数就会被回调。

这原则上有效,但一段时间后通道超时。长时间运行的连接似乎存在一些基本问题(请参阅 http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspx)和双工 HTTP 回调可能不是正确的解决方案。还有其他方法可以使用 WCF 实现发布/订阅模式吗?

编辑:即使有 2 小时的超时,频道最终也会受到影响。我收到此错误:

无法完成“SignalSpeedData”操作,因为会话通道等待接收消息时超时。要增加超时,请在配置文件中的绑定上设置 receiveTimeout 属性,或直接在 Binding 上设置 ReceiveTimeout 属性。

这发生在最后一次成功通话后 15 分钟。我想知道是否可以为每次通话重新建立一个新的会话,而不是保持会话打开。

4

1 回答 1

6

可靠的消息传递将满足您的需求。如果出现问题,通道会自行重新建立。WSDualHTTPBinding 为 http 绑定提供了这个,并且还有一个允许这个的 tcp 绑定。如果您在同一台计算机上,命名管道绑定将默认提供此功能。

于 2009-03-01T18:54:24.483 回答